产生冠军

这题处理下字符串,判断下入度为零的点就可以了。。

#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编辑  收藏  举报

导航