| ||||||||||
| 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