求助2 9 10显示Runtime error
查看原帖
求助2 9 10显示Runtime error
470962
鲁殿灵光楼主2021/8/25 20:52
#include<stdio.h>
int n,m,s,cnt=0;
int dis[10005],vis[10005],head[500005];
struct Edge
{
	int next;
	int to;
	int dis;
}edge[500005];
void add(int from,int to,int dis)
{
	edge[++cnt].next=head[from];
	edge[cnt].to=to;
	edge[cnt].dis=dis;
	head[from]=cnt;
}
void spfa()
{
	int q[10005];
	int front=0,rear=0;
	for(int i=1;i<=n;i++)
	{
		dis[i]=2147483647;
		vis[i]=0;
	}
	q[rear++]=s;
	dis[s]=0;
	vis[s]=1;
	while(front!=rear)
	{
		int u=q[front];
		front++;
		vis[u]=0;
		for(int i=head[u];i;i=edge[i].next)
		{
			int v=edge[i].to;
			if(dis[v]>dis[u]+edge[i].dis)
			{
				dis[v]=dis[u]+edge[i].dis;
				if(vis[v]==0)
				{
					vis[v]=1;
					q[rear++]=v;
				}
			}
		}
	}
}
int main()
{
	scanf("%d %d %d",&n,&m,&s);
	for(int i=1;i<=m;i++)
	{
		int f,g,w;
		scanf("%d %d %d",&f,&g,&w);
		add(f,g,w);
	}
	spfa();
	for(int i=1;i<=n;i++)
		printf("%d ",dis[i]);
}
2021/8/25 20:52
加载中...