【題目敘述】https://zerojudge.tw/ShowProblem?problemid=a552
credit: LiuWilliam
#include <bits/stdc++.h>
#define int long long
const int maxn = 105;
using namespace std;
vector <int> e[maxn];
vector <int> deg;
vector <int> ord;
set <int> st;
void TopoSort() {
while (!st.empty()) {
int u = *st.begin(); st.erase(st.begin());
ord.push_back(u);
for (int v : e[u]) {
deg[v]--;
if (deg[v] == 0) st.insert(v);
}
}
}
signed main() {
ios_base::sync_with_stdio(0), cin.tie(0);
int n, m;
while (cin >> n >> m) {
deg.resize(n);
for (int i = 0; i < m; i++) {
int u, v; cin >> u >> v;
e[u].push_back(v);
deg[v]++;
}
for (int i = 0; i < n; i++) {
if (deg[i] == 0) st.insert(i);
}
TopoSort();
for (int i : ord) {
cout << i << ' ';
}
cout << endl;
ord.clear();
memset(e, 0, sizeof(e));
}
return 0;
}