dijkstra前四个点wa求调
查看原帖
dijkstra前四个点wa求调
347621
_Sushi楼主2022/7/15 12:05
#include<bits/stdc++.h>
using namespace std;
int n,m,s;
int u,v,w;
int dis[300000];
int f[300000];
vector<int> a[300000],b[300000];
priority_queue<int,vector<int>,greater<int> > q;
int main()
{
	scanf("%d%d%d",&n,&m,&s);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&u,&v,&w);
	    a[u].push_back(v),b[u].push_back(w);
	    a[v].push_back(u),b[v].push_back(w);
	}
	for(int i=1;i<=n;i++) dis[i]=1e9;
	dis[s]=0;
	q.push(s);
	while(q.size())
	{
		int x=q.top();
		q.pop();
		for(int i=0;i<a[x].size();i++)
			if(dis[a[x][i]]>dis[x]+b[x][i])
		    {
		    	dis[a[x][i]]=dis[x]+b[x][i];
		    	if(!f[a[x][i]]) q.push(a[x][i]),f[a[x][i]]=1;
			}
	}
	for(int i=1;i<=n;i++) printf("%d ",dis[i]);
	return 0;
}
2022/7/15 12:05
加载中...