New Exercise
This commit is contained in:
51
Exercise/Homework7/Q1KahTuoPu.cpp
Normal file
51
Exercise/Homework7/Q1KahTuoPu.cpp
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user