题目 http://ybt.ssoier.cn:8088/problem_show.php?pid=1381
这里使用的是链式前向星存图
为什么输出是错误的?
#include<iostream>
using namespace std;
const int inf=0x3f3f3f;
struct node
{
int n,next,w;
} S[10001];
int head[10001],d[10001],v[10001],tot=0,n,m;
void in(int n,int m,int w)
{
tot++;
S[tot].n=m;
S[tot].w=w;
S[tot].next=head[n];
head[n]=tot;
}
void F(int x)
{
for(int i=0; i<=n; i++)
{
d[i]=inf;
}
d[x]=0;
for(int l=1; l<=n; l++)
{
int u=0;
for(int i=1; i<=n; i++)
{
if(d[i]<d[u] && v[i]==0)
{
u=i;
}
}
v[u]=1;
for(int i=head[x]; S[i].n!=0; i=S[i].next)
{
if(d[u]+S[i].w<d[i])
{
d[i]=d[u]+S[i].w;
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1; i<=m; i++)
{
int x,y,w;
cin>>x>>y>>w;
in(x,y,w);
}
F(1);
cout<<d[n];
}