首页 > 代码库 > 产生冠军(拓扑排序)
产生冠军(拓扑排序)
http://acm.hdu.edu.cn/showproblem.php?pid=2094
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 int n; 5 int map[2001][2001],d[2001],v[2001]; 6 char name[2001][101]; 7 int tt; 8 int findx(char *s) 9 {10 int i;11 for(i=0;i<tt;i++)12 if(strcmp(name[i],s)==0)13 return i;14 if(i>=tt)15 {16 strcpy(name[tt],s);17 tt++;18 }19 return tt-1;20 }21 int main()22 {23 char a[100],b[100];24 int x,y,j;25 int flag;26 while(scanf("%d",&n)!=EOF&&n!=0)27 {28 tt=0;29 memset(v,0,sizeof(v));30 memset(d,0,sizeof(d));31 memset(map,0,sizeof(map));32 for(int i=0;i<n;i++)33 {34 scanf("%s%s",a,b);35 x=findx(a);36 y=findx(b);37 38 if(!map[x][y])39 {40 map[x][y]=1;41 d[y]++;42 }43 }44 flag=0;45 for(j=0;j<tt;j++)46 {47 if(v[j]==0&&d[j]==0)48 {49 v[j]=1;50 flag++;51 }52 }53 if(flag==1)54 printf("Yes\n");55 else56 printf("No\n");57 58 }59 return 0;60 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。