|
楼主 |
发表于 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;
- }
复制代码 |
|