ZOJ1298||POJ1135 Domino Effect
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1298
翻译从百度上找就有
这题坑了我俩多小时,在zoj上提交总是WA,从网上找AC代码看,思路都差不多,但是人家的就AC。。找了半天也没找出来,我叫不断尝试找测试数据,也找不到,自己写了几组和AC代码输出都是一样的,但还是WA。坑死我了。。
然后我看到poj上也有这个题,就想着把我的代码提交到那上,结果返回的竟然是PE,输出格式问题。。。我把AC代码的输出格式粘到我的代码上,结果……zoj、poj都AC 了……早ZOJ给我返回PE我早就AC了……半天没了……
下面是我的代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 #define MAX 510 6 #define INF 1000000003 7 8 int map[MAX][MAX],flag[MAX],dis[MAX]; 9 int n,m; 10 11 void dijkstra() 12 { 13 int t,i,k,min; 14 t=n; 15 while(t--) 16 { 17 k=0; 18 min=INF-10; 19 for(i=1;i<=n;i++) 20 { 21 if(!flag[i]&&dis[i]<min) 22 { 23 min=dis[i]; 24 k=i; 25 } 26 } 27 if(k==0) break; 28 flag[k]=1; 29 for(i=1;i<=n;i++) 30 { 31 if(!flag[i]&&(dis[i]>dis[k]+map[k][i])) 32 { 33 dis[i]=dis[k]+map[k][i]; 34 } 35 } 36 } 37 } 38 int main() 39 { 40 int i,j,u[MAX],v[MAX],w[MAX],k,x,y,t,count=1; 41 double max; 42 while(scanf("%d %d",&n,&m)!=EOF&&(m+n)) 43 { 44 for(i=1;i<=n;i++) 45 { 46 for(j=1;j<=n;j++) 47 map[i][j]=INF; 48 map[i][i]=0; 49 dis[i]=INF; 50 } 51 memset(flag,0,sizeof(flag)); 52 for(i=1;i<=m;i++) 53 { 54 scanf("%d%d%d",&u[i],&v[i],&w[i]); 55 map[u[i]][v[i]]=w[i]; 56 map[v[i]][u[i]]=w[i]; 57 } 58 flag[1]=1;dis[1]=0; 59 for(i=2;i<=n;i++) 60 { 61 dis[i]=map[1][i]; 62 } 63 dijkstra(); 64 max=0;k=1; 65 for(i=2;i<=n;i++) 66 { 67 if(dis[i]>max) 68 { 69 max=dis[i]; 70 k=i; 71 } 72 } 73 x=y=0; 74 for(i=1;i<=m;i++) 75 { 76 if((dis[u[i]]+dis[v[i]]+w[i])/2.0-max>0.000000001) 77 { 78 max=(dis[u[i]]+dis[v[i]]+w[i])/2.0; 79 x=u[i]; 80 y=v[i]; 81 } 82 } 83 printf("System #%d\n",count++); 84 if( x+y ) 85 { 86 if(x>y) {t=x;x=y;y=t;} 87 printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n",max,x,y); 88 } 89 else 90 { 91 printf("The last domino falls after %.1lf seconds, at key domino %d.\n",max,k); 92 } 93 printf("\n"); 94 } 95 return 0; 96 }