//这题对序号输出有要求,较小的序号优先输出,所以用到优先队列//优先队列是优先弹出值最大的,所以最后要反向输出结果,才是正确的output#include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;const int MAXN=100005;vector g[MAXN];int degree[MAXN],L[MAXN],n,m;void toposort(){ int tot=0; priority_queue que; //toposort的实现类似于BFS for(int i=1;i<=n;i++) if(!degree[i]) que.push(i); while(!que.empty()) { int x=que.top();que.pop(); L[tot++]=x; for(int j=0;j =0;i--) { printf("%d",L[i]); if(i!=0) printf(" "); else printf("\n"); } }}