Uva 10305 Ordering Tasks(拓扑排序)
题目链接:https://vjudge.net/problem/UVA-10305
相似题目:CF1385E(完 全 一 致)
#include <bits/stdc++.h> using namespace std; int main() { int n, m; while (cin >> n >> m and (n or m)) { vector<int> G[n]; int deg[n] = {}; for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; --u, --v; G[u].push_back(v); ++deg[v]; } queue<int> que; for (int i = 0; i < n; i++) { if (deg[i] == 0) { que.push(i); } } vector<int> res; while (!que.empty()) { int u = que.front(); que.pop(); res.push_back(u); for (auto v : G[u]) { if (--deg[v] == 0) { que.push(v); } } } for (int i = 0; i < res.size(); ++i) { cout << res[i] + 1 << " \n"[i == res.size() - 1]; } } }
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号