程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度教程第81題

九度教程第81題

編輯:C++入門知識

C語言源碼: [cpp]   #include<stdio.h>   #include<stdlib.h>   #define maxsize 510   int E[maxsize][maxsize];   int q[maxsize*2];   int indegree[maxsize];   int cmp(const void *a,const void *b)   {       return *(int *)a-*(int *)b;   }   int main()   {       int m,n,a,b,i,j,num,front,rear;       while(scanf("%d %d",&n,&m)!=EOF)       {   www.2cto.com         for(i=0;i<n;i++)           {               indegree[i]=0;               for(j=0;j<n;j++)                   E[i][j]=0;           }           while(m>0)           {               m--;               scanf("%d %d",&a,&b);               if(E[a-1][b-1]!=1)               {                   E[a-1][b-1]=1;                   indegree[b-1]+=1;               }//這個題有個陷阱,假如一個對贏了另一個對好幾次呢。。。           }           front=0;           rear=0;           for(i=0;i<n;i++)           {               if(indegree[i]==0)                   q[rear++]=i;           }           qsort(q,rear,sizeof(q[0]),cmp);           num=1;           while(front!=rear)           {               i=q[front++];               if(num!=n)                   printf("%d ",i+1);               else               {                   printf("%d\n",i+1);                   break;               }               num++;               for(j=0;j<n;j++)               {                   if(E[i][j]!=0)                   {                       indegree[j]--;                       if(indegree[j]==0)                           q[rear++]=j;                   }               }               qsort(&q[front],rear-front,sizeof(q[front]),cmp);           }       }   }    

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