New Exercise

This commit is contained in:
e2hang
2025-12-08 22:54:52 +08:00
parent 4965074539
commit ce2b06bf1e
8 changed files with 726 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<vector<int>> adj(n);
vector<int> degree(n, 0);
for(int i = 0; i < m; i++){
int u, v;
cin >> u >> v;
adj[u].push_back(v);
degree[v]++;
}
priority_queue<int, vector<int>, greater<int>> pq;
for(int i = 0; i < n; i++){
if(degree[i] == 0){
pq.push(i);
}
}
vector<int> ans;
while(!pq.empty()){
int u = pq.top();
pq.pop();
ans.push_back(u);
for(int v : adj[u]){
degree[v]--;
if(degree[v] == 0){
pq.push(v);
}
}
}
if(ans.size() != n){
cout << "unworkable project" << endl;
}else{
for(int i = 0; i < n; i++){
cout << ans[i] << " ";
}
cout << endl;
}
return 0;
}