九度OJ 教程82 拓扑排序之《产生冠军》
题目地址:http://ac.jobdu.com/problem.php?cid=1040&pid=104
//九度OJ 教程82 拓扑排序之《产生冠军》//http://ac.jobdu.com/problem.php?cid=1040&pid=81#include<stdio.h>#include<string.h>#define MAXS 1002char name[MAXS][40];int count;int findnum(char *h){int i,j,k,flag=1;for(i=1;i<count&&flag;i++){if(strcmp(name[i],h)==0)flag=0;}if(flag==0)return (i-1);else {strcpy(name[count++],h);return (count-1);}}int main(){char h1[40],h2[40];int a,b,i,j,n,mark[MAXS][MAXS],sum;while(~scanf("%d",&n)&&n){count=1;memset(mark,0,MAXS*MAXS*sizeof(int));while(n--){scanf("%s %s",h1,h2);a=findnum(h1);b=findnum(h2);mark[a][b]=1;mark[0][b]++;//mark[0][k]表示第k位选手被击败的次数。}//whilefor(i=1,sum=0;i<count;i++)if(mark[0][i]==0)sum++;if(sum==1)printf("Yes\n");else printf("No\n");}return 0;}