Prim 求调
  • 板块学术版
  • 楼主E1_de5truct0r
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/5/21 15:15
  • 上次更新2023/11/4 23:00:14
查看原帖
Prim 求调
195198
E1_de5truct0r楼主2021/5/21 15:15

打了个模板,写挂了

// std Prim code.
#include <bits/stdc++.h>
using namespace std;
vector<int> Edge[100005];
priority_queue<pair<int,int> >q;
int dis[100005],n,m;
bool vis[100005];
void Prim(int start)
{
	for(int i=1;i<=n;i++) dis[i]=1e9;
	dis[start]=0; int mindis=0;
	q.push(make_pair(start,0));
	while(!q.empty())
	{
		int fir=q.top().first,sec=q.top().second;
		mindis+=dis[fir]; vis[fir]=1;
		for(int i=0;i<Edge[fir].size();i++)
		{
			int to=Edge[fir][i];
			if(vis[to]) continue;
			dis[to]=min(dis[to],Edge[fir][i]+dis[fir]);
			q.push(make_pair(to,-dis[to]));
		}
		q.pop();
	}
	cout<<mindis;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		Edge[x].push_back(y);
		Edge[y].push_back(x);
	}
	Prim(1);
	return 0;
}
2021/5/21 15:15
加载中...