题目链接:题目
AC代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<vector> 4 #include<cstring> 5 #include<cstdio> 6 using namespace std; 7 const int N = 2010; 8 int m,n; 9 bool vis[N][N],vis1[N]; 10 vector< int >mm[N]; 11 void dfs(int m,int x) 12 { 13 if(mm[x].size()==0) return; 14 for(int i=0;i<mm[x].size();i++) 15 { 16 if(vis[m][mm[x][i]] == false) 17 { 18 vis[m][mm[x][i]]=true; 19 int t = mm[x][i]; 20 dfs(m,t); 21 } 22 } 23 } 24 int main() 25 { 26 int T,cas =1,x,y; 27 scanf("%d",&T); 28 while(T--) 29 { 30 scanf("%d %d",&m,&n); 31 for(int i=1;i<=m;i++) 32 mm[i].clear(); 33 for(int i=0; i<n; i++) 34 { 35 scanf("%d %d",&x,&y); 36 mm[x].push_back(y); 37 } 38 memset(vis,false,sizeof(vis)); 39 for(int i=1;i<=m;i++) 40 vis[i][i] = true; 41 for(int i =1;i<=m;i++) dfs(i,i); 42 bool flag = true; 43 for(int i=1;i<=m;i++) 44 { 45 for(int j=1;j<=m;j++) 46 { 47 if(vis[i][j] == false && vis[j][i] == false) 48 { 49 flag = false; 50 goto end; 51 } 52 } 53 } 54 end: if (flag) printf("Case %d: Kalimdor is just ahead ",cas++); 55 else printf("Case %d: The Burning Shadow consume us all ",cas++); 56 } 57 return 0; 58 }