只需统计无没有前驱结点的结点个数即可,如果是环,是0个,如果有不确定的,那么肯定>1
利用STL里的map,string,set容器可以简洁地实现
代码如下:

[cpp]
#include
#include
#include
#include
map
set
set
int main(){
int n,i;
string a;
string b;
//freopen("1.txt","r",stdin);
while(cin>>n,n){
G.clear();
Set.clear();
for(i=1;i<=n;i++){
cin>>a>>b;
Set.insert(a);
Set.insert(b);
G[b]=a;
}
i=0;
for(p=Set.begin();p!=Set.end();p++){
if(G[*p].length()==0)
i++;
}
if(i==1)
cout<<"Yes"<
cout<<"No"<
return 0;
}