0分蒟蒻求助
查看原帖
0分蒟蒻求助
357004
志摩凛楼主2021/3/12 16:49
#include <bits/stdc++.h>
using namespace std;
bool b[1001];
int n,m,s,a[1001][1001],Min[1001];
void Dijkstra()
{
	for(int i=1;i<=n;i++)
		Min[i]=a[s][i];
	Min[s]=0;
	b[s]=1;
	for(int i=1;i<n;i++)
	{
		int tmin=99999999,k=0;
		for(int j=1;j<=n;j++)
			if(!b[j]&&tmin>Min[j])
			{
				tmin=Min[j];
				k=j;
			}
		if(k==0)
			break;
		b[k]=1;
		for(int j=1;j<=n;j++)
		{
			if(Min[j]>Min[k]+a[k][j])
				Min[j]=Min[k]+a[k][j];
		}
	}	
}
int main()
{
	memset(a,0x03030303,sizeof(a));		
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		a[u][v]=w;
	}
	Dijkstra();
	for(int i=1;i<=n;i++)
		cout<<Min[i]<<" ";
	return 0;
}
2021/3/12 16:49
加载中...