| ||||||||||
| 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 | |||||||||
是求从第一点到所有其他点的最短路径,我用floyd过了In Reply To:这道题的算法不是用Dijkstra 求从第一点到所有其他点的最短路径吗 ? Posted by:bingling at 2004-10-05 17:26:59 > 各位高手 帮忙看看 为什么错?是我题意没理解对吗?
> #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