wocao!
刚写的提交不成功!
算了,反正也没什么好讲的,只是我在这题犯了一个超低级的错误!
好在纠正了!
代码:
#include<stdio.h>
//#include<memory.h>
//using namespace std;
int dir[202];
int data[202][202];
int d[202][202];
int flag[202];
int n,m,a,b,x,s,t,i,j;
void init()
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
data[i][j]=99999999;
d[i][j]=99999999;
}
dir[i]=99999999;
flag[i]=0;
}
}
void dijstra()
{
//printf("%d/n",dir[t]);
int y;
int min;
int k;
d[s][s]=0;
y=s;
for(k=0;k<n;k++)
{
min=99999999+1;
flag[y]=1;
for(i=0;i<n;i++)
if(flag[i]==0 && (d[s][i]>d[s][y]+data[y][i]) )
d[s][i]=d[s][y]+data[y][i];
for(i=0;i<n;i++)
if(d[s][i]<min&&flag[i]==0)
{
min=d[s][i];
y=i;
}
if(y==t)
{
dir[t]=d[s][y];
return;
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
while(m--)
{
scanf("%d%d%d",&a,&b,&x);
if(x<data[a][b]||x<data[b][a])
{
data[a][b]=x,
data[b][a]=x;
}
}
scanf("%d%d",&s,&t);
if(s==t) { printf("0/n"); continue;}
dijstra();
{
if(dir[t]==99999999)
printf("-1/n");
else printf("%d/n",dir[t]);
}
}
return 0;
}