蒟蒻第一次写dijkstra,连样例都过不了,求大佬帮助!
#include<cstdio>
#include<cstring>
using namespace std;
int g[10100][10100];
int dis[10100];
bool book[10100];
int minn;
int n,m,s;
int u,v,w;
int min(int a,int b)
{
if(a>b) return a;
return b;
}
int main()
{
memset(g,0x3f3f3f3f,sizeof(g));
scanf("%d%d%d",&n,&m,&s);
g[s][s]=0;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(g[u][v]!=0) g[u][v]=min(g[u][v],w);
else g[u][v]=w;
}
for(int i=1;i<=n;i++) dis[i]=g[s][i];
book[s]=true;
for(int i=1;i<=n-1;i++)
{
minn=0x3f3f3f3f;
for(int j=1;j<=n;j++)
{
if(!book[j]&&dis[j]<minn)
{
u=j;
minn=dis[j];
}
}
book[u]=true;
for(int v=1;v<=n;v++)
{
if(g[u][v]<0x3f3f3f3f)
if(dis[v]>dis[u]+g[u][v]) dis[v]=dis[u]+g[u][v];
}
}
for(int i=1;i<=n;i++) printf("%d ",dis[i]);
return 0;
}