产生冠军
这题处理下字符串,判断下入度为零的点就可以了。。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char name[2011][100];
char str1[100],str2[100];
//int map[2021][2211];
int dp[2022];
int N, M, flag;
int find( char *s ,int x)
{
int i;
for ( i = 0; i < x; i++)
if(strcmp(s,name[i]) == 0)
return i;
return -1;
}
int main( )
{
int i, j;
while (scanf("%d", &N), N) {
flag = 0;
int a, b, k = 0;
memset(dp,0,sizeof(dp));
for (i = 1; i <= N; i++) {
scanf("%s %s",str1, str2);
a = find(str1, k);
b = find(str2, k);
if(a == -1)
strcpy(name[k],str1),a = k, k++;
if(b == -1)
strcpy(name[k],str2),b = k, k++;
dp[b]++;
}
for (i = 0; i < k;i++)
if(dp[i] == 0)
flag++;
if(flag == 1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
posted on 2011-07-20 11:04 more think, more gains 阅读(184) 评论(0) 编辑 收藏 举报