程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度OJ 教程82 拓撲排序之《產生冠軍》

九度OJ 教程82 拓撲排序之《產生冠軍》

編輯:C++入門知識

  [csharp]   //九度OJ 教程82 拓撲排序之《產生冠軍》   //http://ac.jobdu.com/problem.php?cid=1040&pid=81   #include<stdio.h>   #include<string.h>   #define MAXS 1002   char 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位選手被擊敗的次數。           }//while           for(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;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved