标签:
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<queue> 5 #include<vector> 6 7 using namespace std; 8 9 const int maxn=30000+5; 10 11 int f[maxn]; 12 int inde[maxn]; 13 vector<int>edge[maxn]; 14 int tot; 15 16 void solve(int n) 17 { 18 tot=1; 19 20 priority_queue<int>que; 21 while(!que.empty()) 22 que.pop(); 23 24 for(int i=1;i<=n;i++) 25 { 26 if(inde[i]==0) 27 que.push(i); 28 } 29 30 while(!que.empty()) 31 { 32 int u=que.top(); 33 f[tot++]=u; 34 que.pop(); 35 36 for(int i=0;i<edge[u].size();i++) 37 { 38 int v=edge[u][i]; 39 inde[v]--; 40 if(inde[v]==0) 41 que.push(v); 42 } 43 } 44 45 for(int i=tot-1;i>1;i--) 46 printf("%d ",f[i]); 47 printf("%d\n",f[1]); 48 49 return ; 50 } 51 52 int main() 53 { 54 int test; 55 scanf("%d",&test); 56 57 while(test--) 58 { 59 int n,m; 60 scanf("%d%d",&n,&m); 61 62 memset(inde,0,sizeof(inde)); 63 for(int i=1;i<=n;i++) 64 edge[i].clear(); 65 66 int u,v; 67 for(int i=1;i<=m;i++) 68 { 69 scanf("%d%d",&u,&v); 70 edge[v].push_back(u); 71 inde[u]++; 72 } 73 74 solve(n); 75 } 76 77 return 0; 78 }
标签:
原文地址:http://www.cnblogs.com/-maybe/p/4492213.html