样例都过不了的蒟蒻求助
查看原帖
样例都过不了的蒟蒻求助
232516
naroanah楼主2020/8/8 11:38

一种奇怪的堆优化做法

#include<bits/stdc++.h>
using namespace std;
#define INF 2147483647
priority_queue<pair<int,int>, vector<pair<int,int> >, greater<pair<int,int> > >heap;
vector<int> to[200005],len[200005];
vector<int>::iterator it;
int dis[200005];
bool vis[200005];
int n,m,a,b,c,s;
void add(int x,int y,int z)
{
	to[x].push_back(y);
	len[x].push_back(z);
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		cin>>a>>b>>c;
		add(a,b,c);
		dis[i]=INF;
	}
	dis[s]=0;
	heap.push(make_pair(0,s));
	while(!heap.empty())
	{
		int x=heap.top().second;
		heap.pop();
		if(!vis[x])
		{
			vis[x]=1;
			for(it=to[x].begin();it!=to[x].end();it++)
			{
				if(dis[*it]>dis[x]+len[x][*it])
				{
					dis[*it]=dis[x]+len[x][*it];
					heap.push(make_pair(dis[*it],*it));
				}
			}
		}
	}
	for(int i=1;i<=n;++i) printf("%d ",dis[i]);
	return 0;
}

样例输出

0 4 0 3

求大佬看看

2020/8/8 11:38
加载中...