题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2094
这题竟然错了好几次。。看了讨论区才发现,用map每次都要清空才行。。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include<algorithm>
using namespace std;
map<string,int>q;
int d[1100];
int main()
{
int n, i, j, x;
char s1[100], s2[100];
while(scanf("%d",&n)!=EOF&&n)
{
q.clear();
getchar();
x=0;
memset(d,0,sizeof(d));
i=1;
while(n--)
{
scanf("%s%s",s1,s2);
if(!q[s1])
q[s1]=i++;
if(!q[s2])
q[s2]=i++;
d[q[s2]]++;
}
for(j=1;j<i;j++)
{
if(d[j]==0)
{
x++;
}
//printf("%d\n",d[j]);
}
if(x==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}