全RE,求大佬指点
查看原帖
全RE,求大佬指点
557136
zhaoqicheng2007楼主2022/7/31 18:26
#include<bits/stdc++.h>
using namespace std;
const int N=1e4+1;
const long long INF=0x3f3f3f3f;
int n,m,s,cu,cv,cw;
long long f[N];
struct pic
{int to,w;};
vector<pic> v[N];
void Dijkstra(int s)
{
	bool vis[N];
	memset(f,INF,sizeof(f));
	f[s]=0;vis[s]=1;
	for(int i=1;i<=n;++i) 
		if(i!=s)
		{
			int u;
			long long mx=INF;
			for(int j=1;j<=n;++j)
				if(!vis[j]&&mx>=f[j])
				{mx=f[j];u=j;}
			vis[u]=1;
			for(int j=0;j<v[u].size();++j) 
				f[v[u][j].to]=min(f[v[u][j].to],f[u]+v[u][j].w);
		}
}
int main()
{
	/*freopen("P7731_1.in","r",stdin);
	freopen("P7731_1.out","w",stdout);*/
	cin>>n>>m>>s;
	for(int i=1;i<=m;++i)
	{
		cin>>cu>>cv>>cw;
		v[cu].push_back((pic){cv,cw});
	}
	Dijkstra(s);
	for(int i=1;i<=n;++i)	
	{
		if(i!=s&&!f[i])	cout<<2147483647<<' ';
		else	cout<<f[i]<<' ';
	}
	//cout<<endl<<clock()/1000.00;
	//fclose(stdin);fclose(stdout);
	return 0;
}
2022/7/31 18:26
加载中...