请大牛帮助~~谢谢
以下是我的源码
#include<stdio.h>
long map[2001][2001]={0};
long dui[100000]={0};
long f[2001]={0};
long hash[2001]={0};
long out[2001]={0};
long close=0,open=1;
long bushu[100000]={0};
main()
{
FILE *fp,*fo;
long i,j,k,l,m,n,v1,v2,pay,h,s,t,g,vi;
scanf("%ld%ld",&n,&m);
for(i=0;i<m;i++)
{
scanf("%ld%ld%ld",&v1,&v2,&pay);
map[v1][v2]=map[v2][v1]=pay;
}
s=1;
dui[0]=s;
hash[s]=1;
for(i=1;i<=n;i++)
if(i!=s)
f[i]=100000000;
while(close<open)
{
vi=dui[close];
for(i=1;i<=n;i++)
if(map[vi][i]!=0)
if(f[i]>f[vi]+map[vi][i]&&(bushu[close]!=1||i!=s))
{
f[i]=f[vi]+map[vi][i];
if(hash[i]==0)
dui[open++]=i;
hash[i]=1;
bushu[open-1]=bushu[close]+1;
}
hash[vi]=0;
if(close==0)
f[s]=10000000;
close++;
}
if(f[s]!=10000000)
printf("%ld",f[s]);
else
printf("He will never come back.");
// getch();
}