BestCoder Round #1 第一题 逃生
// 等了好久,BESTCODER 终于出来了、、像咋这样的毕业的人、、就是去凑凑热闹
// 弱校搞acm真是难,不过还是怪自己不够努力
// 第一题是明显的拓扑排序,加了了个字典序限制而已
// 用优先队列就可以搞定了
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #include <vector> #include <map> #include <queue> using namespace std; #define LL long long #define N 30010 #define mod 1000000007 vector<int> V[N]; int in[N]; int ans[N]; int main() { // priority_queue<int,vector<int>,greater<int> >Q; priority_queue<int>Q; int T; int n,m; int a,b; int i; scanf("%d",&T); while(T--) { scanf("%d %d",&n,&m); for(i=1;i<=n;i++){ V[i].clear(); in[i]=0; } while(m--) { scanf("%d %d",&a,&b); V[b].push_back(a); in[a]++; } for(i=1;i<=n;i++) if(in[i]==0) Q.push(i); int id=0; while(!Q.empty()) { a=Q.top(); Q.pop(); ans[id]=a; id++; for(i=0;i<V[a].size();i++){ b=V[a][i]; in[b]--; if(in[b]==0) Q.push(b); } } for(i=id-1;i>=0;i--) printf("%d%c",ans[i],i==0?'\n':' '); } return 0; }