九度 OJ 1450 产生冠军

这样的拓扑排序,唉,不好玩。。。

#include <stdio.h>
#include <string.h>

struct Player{
	char name[100];
	int indegree;
}p[1001];

int main()
{
	int n;
	while(scanf("%d\n",&n) != EOF && n != 0){
		int cnt = 0;
		for(int i = 0 ; i < n ; ++i){
			char p1[100] , p2[100];
			bool flag1 = false, flag2 = false;
			scanf("%s%s",p1,p2);

			for(int j = 0 ; j < cnt ; ++j){
				if( strcmp(p1,p[j].name) == 0){
					flag1 = true;
				}
				if( strcmp(p2,p[j].name) == 0){
					p[j].indegree++;
					flag2 = true;
					break;
				}
			}
			if(flag1 == false){
				strcpy(p[cnt].name , p1);
				p[cnt++].indegree = 0;
			}
			if(flag2 == false){
				strcpy(p[cnt].name,p2);
				p[cnt++].indegree = 1;
			}
		}

		int ans = 0;
		for(int i = 0 ; i < cnt ; ++i){
			if(p[i].indegree == 0)
				ans++;
		}

		if(ans == 1) printf("Yes\n");
		else	printf("No\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/xp1994816/article/details/52486030
今日推荐