HDU 1285 确定比赛名次(拓扑排序)
这是拓扑排序? 我很纳闷。。有重边WA了N次。。。
1 #include <stdio.h> 2 #include <string.h> 3 int p[501][501],o[501],n,k[501],z; 4 void dfs() 5 { 6 int i,j,nu = 1; 7 while(nu <= n) 8 { 9 if(i == n+1) 10 break; 11 for(i = 1; i <= n; i ++) 12 { 13 if(o[i] == 0&&!k[i]) 14 { 15 k[i] = 1; 16 if(z) 17 printf(" %d",i); 18 else 19 { 20 z = 1; 21 printf("%d",i); 22 } 23 for(j = 1; j <= n; j ++) 24 { 25 if(p[i][j]&&!k[j]) 26 o[j] --; 27 } 28 break; 29 } 30 } 31 } 32 } 33 int main() 34 { 35 int i,m,sv,ev; 36 while(scanf("%d%d",&n,&m)!=EOF) 37 { 38 z = 0; 39 memset(p,0,sizeof(p)); 40 memset(o,0,sizeof(o)); 41 memset(k,0,sizeof(k)); 42 for(i = 1;i <= m; i ++) 43 { 44 scanf("%d%d",&sv,&ev); 45 if(p[sv][ev] == 0) 46 { 47 p[sv][ev] = 1; 48 o[ev] ++; 49 } 50 } 51 dfs(); 52 printf("\n"); 53 } 54 return 0; 55 }