
有向无环图一定可以得出拓扑图有环的图无法进行拓扑排序#include bits/stdc.h using namespace std; const int N 1e510,M N*4; int h[N],e[M],ne[M],idx; int q[N],d[N]; int n,m; void add(int a,int b) { e[idx] b; ne[idx] h[a]; h[a] idx; } bool topsort() { int hh 0,tt -1; for(int i 1;i n;i) { if(!d[i]) q[tt] i; } while(hhtt) { int t q[hh]; for(int i h[t];i!-1;i ne[i]) { int j e[i]; d[j]--; if(!d[j]) q[tt] j; } } return tt n-1; } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); cin n m; memset(h,-1,sizeof h); while(m--) { int a,b; cin a b; add(a,b); d[b]; } if(topsort()) { for(int i 0;i n;i) { cout q[i] ; } } else{ cout -1 \n; } return 0; }