一片RE求助大佬
查看原帖
一片RE求助大佬
84236
liujingcheng楼主2020/8/8 16:59
#include<bits/stdc++.h>
using namespace std;
struct edge
{
	int to;
	int w;
};
int dis[10001];
typedef pair<int,int> P;
vector<edge> g[10001];
int n,m,s;
void dijkstra(int s)
{
	priority_queue<P, vector<P> , greater<P> > q;
	memset(dis,0x3f,sizeof(dis));
	dis[s]=0;
	q.push(P(0,s));
	while(!q.empty())
	{
		P p=q.top();
		q.pop();
		int idx=p.second;
		if(dis[idx]<p.first)continue;
		dis[idx]=p.first;
		for(int i=0;i<g[idx].size();++i)
		{
			edge e=g[idx][i];
			if(dis[e.to]>dis[idx]+e.w)
			{
				dis[e.to]=dis[idx]+e.w;
				q.push(P(dis[e.to],e.to));
			}
		}
	}
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;++i)
	{
		int u,v,w;
		cin>>u>>v>>w;
		g[u].push_back({v,w});
	}
	dijkstra(s);
	for(int i=1;i<=n;++i)
	{
		if(dis[i]==0x3f3f3f3f)cout<<2147483647<<" ";
		else cout<<dis[i]<<" ";
	}
}

为啥弱化的过了这个没过

2020/8/8 16:59
加载中...