dijsktra全部WA,求助
查看原帖
dijsktra全部WA,求助
770618
U_star楼主2022/10/15 21:24
#include<bits/stdc++.h>
#define inf 2147483647
using namespace std;
int dis[200005],u,v,w,n,m,s;
bool vis[200005];
vector<pair<int,int> >p[200005];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
void dijsktra()
{
	while(q.empty()==false)
	{
		pair<int,int>k=q.top();
		q.pop();
		if(vis[k.second])
		continue;
		vis[k.second]=1;
		for(int i=p[k.second].size()-1;~i;i--)
		{
			pair<int,int>e=p[k.second][i];
			if(dis[e.second]>k.first+e.first) 
			q.push(make_pair(dis[e.second]=k.first+e.first,e.second));
		}
	}
	return;
}
int main()
{
	ios::sync_with_stdio(false);
	cin>>n>>m>>s;
	for(int i=1;i<=n;i++)
	dis[i]=inf;
	for(int i=1;i<=n;i++)
	{
		cin>>u>>v>>w;
		p[u].push_back(make_pair(w,v));
	}
	dis[s]=0;
	q.push(make_pair(0,s));
	dijsktra();
	for(int i=1;i<=n;i++)	
	cout<<dis[i]<<" ";
	return 0;
}
2022/10/15 21:24
加载中...