Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
求测试数据,能测的都过了,但还是不能ac啊!#include"iostream" using namespace std; #define N 501 #define MAX 999999 float map[N][N],d[N]; int n; void di(int v) { int i,j,u; float temp=MAX; bool used[N]={false}; for(i=1;i<=n;i++) d[i]=map[v][i]; used[v]=true; for(i=1;i<n;i++) { u=v;temp=MAX; for(j=1;j<=n;j++) { if(!used[j]&&temp>d[j]) { temp=d[j]; u=j; } } used[u]=true; for(j=1;j<=n;j++) { if(!used[j]&&d[u]+map[u][j]<d[j]) d[j]=d[u]+map[u][j]; } } } int main() { int i,j,m,a,b,t,s=1,rem1[N],t1,x; float rem[N],bestmax=0.0,l,max=0.0; while(scanf("%d%d",&n,&m)) { if(m==0&&n==0) break; if(n==1) { printf("System #%d\nThe last domino falls after 0.0 seconds, at key domino 1.\n\n",s); s++; continue; } bestmax=0.0; max=0.0; for(i=1;i<=n;i++) { rem[i]=0.0; for(j=1;j<=n;j++) map[i][j]=max; } for(i=1;i<=m;i++) { scanf("%d%d%f",&a,&b,&l); map[a][b]=map[b][a]=l; } for(i=1;i<=n;i++) map[i][i]=0; di(1); for(i=2;i<=n;i++) if(max<d[i]) { max=d[i]; t=i; } for(i=1,j=1;i<=n;i++) { if(map[t][i]!=MAX) { rem[j]=(float)(max+d[i]+map[t][i])/2; rem1[j]=i; j++; } } for(i=1;i<j;i++) { if(bestmax<=rem[i]) { bestmax=rem[i]; t1=rem1[i]; } } if(t>t1) { x=t1; t1=t; t=x; } if(max==bestmax) { printf("System #%d\nThe last domino falls after %.1f seconds, at key domino %d.\n",s,bestmax,t); printf("\n"); } if(bestmax!=max) { printf("System #%d\nThe last domino falls after %.1f seconds, between key dominoes %d and %d.\n",s,bestmax,t,t1); printf("\n"); } s++; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator