| 
 | 
 
 
 楼主 |
发表于 2018-2-18 00:03:21
|
显示全部楼层
 
 
 
map<string,int> M;  //定义一个完成从string到int映射的map 
M.clear();  //清空一个map 
M.find(a);  //确定是否保存string对象b的映射,若没有函数返回M.end(); 
M[a]=idx;  //you know! 
 
- #include<cstdio>
 
 - #include<vector>
 
 - #include<map>
 
 - #include<cstring>
 
 - #include<iostream>
 
 - #include<queue>
 
  
- using namespace std;
 
 - map<string,int> M;
 
 - int in[2002];
 
 - int main()
 
 - {
 
 -         int n;
 
 -         while(scanf("%d",&n)!=EOF&&n!=0)
 
 -         {
 
 -                 memset(in,0,sizeof(in));
 
 -                 M.clear();
 
 -                 int idx=0;
 
 -                 for(int i=0;i<n;i++)
 
 -                 {
 
 -                         char str1[50],str2[50];
 
 -                         scanf("%s%s",&str1,&str2);
 
 -                         string a=str1,b=str2;
 
 -                         int idxa,idxb;
 
 -                         if(M.find(a)==M.end())
 
 -                         {
 
 -                                 idxa=idx;
 
 -                                 M[a]=idx++;
 
 -                         }
 
 -                         else        idxa=M[a];
 
 -                         if(M.find(b)==M.end())
 
 -                         {
 
 -                                 idxb=idx;
 
 -                                 M[b]=idx++;
 
 -                         }
 
 -                         else        idxb=M[b];
 
 -                         in[idxb]++;
 
 -                 }
 
 -                 int cnt=0;
 
 -                 for(int i=0;i<idx;i++)
 
 -                         if(in[i]==0)
 
 -                                 cnt++;
 
 -                 puts(cnt==1?"Yes":"No");
 
 -         }
 
 -         return 0;
 
 - }
 
  复制代码 |   
 
 
 
 |