1 #include <iomanip> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #include <algorithm> 6 #include <queue> 7 #include <stack> 8 #include <vector> 9 using namespace std; 10 vector<int>e[100100]; 11 int n,m,t,inbug[100100],sum; 12 int topsort() 13 { 14 queue<int>q; 15 sum=0; 16 for(int i=1;i<=n;i++) 17 if(inbug[i]==0) 18 q.push(i); 19 while(!q.empty()) 20 { 21 int now=q.front(); 22 q.pop(); 23 sum++; 24 for(int i=0;i<e[now].size();i++) 25 if(--inbug[e[now][i]]==0) 26 q.push(e[now][i]); 27 } 28 if(sum==n) 29 return 1; 30 return 0; 31 } 32 int main(int argc, char *argv[]) 33 { 34 scanf("%d",&t); 35 while(t--) 36 { 37 scanf("%d%d",&n,&m); 38 for(int i=1;i<=n;i++) 39 e[i].clear(); 40 memset(inbug,0,sizeof(inbug)); 41 while(m--) 42 { 43 int u,v; 44 scanf("%d%d",&u,&v); 45 e[u].push_back(v); 46 inbug[v]++; 47 } 48 sum=0; 49 if(topsort()) 50 puts("Correct"); 51 else 52 puts("Wrong"); 53 } 54 return 0; 55 }
原文地址:https://www.cnblogs.com/huluxin/p/9829053.html
时间: 2024-12-01 19:48:19