10分求助
查看原帖
10分求助
180406
lilong楼主2021/8/10 10:44
#include <iostream>
#include <cstdio>
#define BIG 10000000
using namespace std;
int n,m,s,d[100001],t[100001],len[5001][5001],a,b,c;
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=5000;i++)
		for(int j=1;j<=5000;j++)
			len[i][j]=BIG;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b>>c;
		len[a][b]=c;
	}
	for(int i=1;i<=n;i++)
		d[i]=len[s][i];
	d[s]=0;
	t[s]=1;
	for(int i=1;i<n;i++)
	{
		int v,mi=0x7fffffff;
		for(int j=1;j<=n;j++)
			if(t[j]==0&&d[j]<mi)
			{
				v=j;
				mi=d[j];
			}
		t[v]=1;
		for(int j=1;j<=n;j++)
			if(t[j]==0)
				if(d[v]+len[v][j]<d[j])
					d[j]=d[v]+len[v][j];
	}
	for(int i=1;i<=n;i++)
		if(d[i]==BIG) cout<<0x7fffffff<<' ';
		else cout<<d[i]<<' ';
	return 0;
}
2021/8/10 10:44
加载中...