hdu2094产生冠军
http://acm.hdu.edu.cn/showproblem.php?pid=2094
其实这题也不算是拓扑排序了 只需要判断最开始入度是否唯一就可以了 如果是0 肯定有环了 不是0 会有多个冠军也不对
View Code
1 #include<iostream> 2 #include<map> 3 #include<string> 4 #include<string.h> 5 using namespace std; 6 int de[1001]; 7 int main() 8 { 9 int i,j,k,g,n,fg; 10 string s1,s2; 11 while(cin>>n) 12 { 13 if(!n) 14 break; 15 memset(de,0,sizeof(de)); 16 map <string, int > f; 17 f.clear(); 18 fg = 0;g = 0 ; 19 for(i = 1; i <= n ; i++) 20 { 21 cin>>s1>>s2; 22 if(!f[s1]) 23 { 24 g++; 25 f[s1] = g; 26 } 27 if(!f[s2]) 28 f[s2] = ++g; 29 de[f[s2]]++; 30 } 31 for(i = 1; i <= g ; i++) 32 if(de[i]==0) 33 fg++; 34 if(fg!=1) 35 cout<<"No"<<endl; 36 else 37 cout<<"Yes"<<endl; 38 } 39 return 0; 40 }