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 |
这道题的算法不是用Dijkstra 求从第一点到所有其他点的最短路径吗 ?各位高手 帮忙看看 为什么错?是我题意没理解对吗? #include<stdio.h> int in[100][100]; int out[100]; int n; void search() { int i,min,sl,temp[100]; temp[0]=0; for(i=1;i<n;i++) temp[i]=in[0][i]; sl=1; do { min=1; for(i=2;i<n;i++) if(temp[i]>0&&temp[min]>temp[i]) min=i; out[min]=temp[min]; temp[min]=-2; for(i=1;i<n;i++) { if(in[min][i]!=-1&&(temp[i]>out[min]+in[min][i]||temp[i]==-1)) temp[i]=out[min]+in[min][i]; } sl++; } while(sl<n); } main() { int i,j,max,k; char c='\0'; scanf("%d",&n); in[0][0]=-1; for(i=1;i<n;i++) { in[i][i]=-1; for(j=0;j<i;j++) { k=0; do { while(c<'0'||c>'9'&&c!='x') scanf("%c",&c); if(c=='x') break; k=k*10+c-'0'; scanf("%c",&c); } while(c>='0'&&c<'9'); if(c=='x') { in[j][i]=in[i][j]=-1; scanf("%c",&c);} else in[j][i]=in[i][j]=k; } } search(); for(i=1,max=0;i<n;i++) if(max<out[i]) max=out[i]; printf("%d\n",max); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator