全RE求助
查看原帖
全RE求助
251074
学习柯学楼主2023/10/20 22:06
#include<bits/stdc++.h>
using namespace std;
long long n, m, x, i, j, a, b, c;
long long edge[1005][1005], dis[1005], vis[1005];
int main(){
	cin>>n>>m>>x;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			edge[i][j]=INT_MAX;
	for(i=1;i<=n;i++)
	{
		dis[i]=INT_MAX;
	}
	for(i=1;i<=m;i++)
	{
		cin>>a>>b>>c;
		edge[a][b]=min(edge[a][b],c);
		if(a==x)
		{
			dis[b]=c;
		}
	}
	dis[x]=0;
	vis[x]=1;
	for(i=2;i<=n;i++)
	{
		int mmin=INT_MAX;
		int u;
		for(j=1;j<=n;j++)
		{
			if(!vis[j]&&dis[j]<mmin)
			{
				mmin=dis[j];
				u=j;
			}
		}
		vis[u]=1;
		for(j=1;j<=n;j++)
		{
			if(!vis[j]&&dis[j]>dis[u]+edge[u][j])
			{
				dis[j]=dis[u]+edge[u][j];
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		cout<<dis[i]<<" ";
	}
	return 0;
}

在本地都可以过但是交洛谷就全RE

2023/10/20 22:06
加载中...