构造完全图(最小生成树)

Posted SSL_LKJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造完全图(最小生成树)相关的知识,希望对你有一定的参考价值。

构造完全图

在这里插入图片描述

解题思路

dijkstra算法

AC代码

#include<algorithm>
#include<cstdio>
using namespace std;
int n,tot,f[100005],len[100005];
long long ans;
struct node
{
	int x,y,z;
}a[100005];
bool cmp(node x,node y)
{
	return x.z<y.z;
}
int find(int x)
{
	if(f[x]==x)return x;
	return f[x]=find(f[x]);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
	 	scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
		f[i]=i;
		len[i]=1;
	}
	f[n]=n;
	len[n]=1;
	sort(a+1,a+n,cmp);
	for(int i=1;i<n;i++)//dijkstra
	{
		int xx=find(a[i].x),yy=find(a[i].y);
		if(xx!=yy)
		{
			ans+=(1ll*len[xx]*len[yy]-1)*(1ll*a[i].z+1)+1ll*a[i].z;
			f[xx]=yy;
			len[yy]+=len[xx];
			tot++;
			if(tot==n-1)break;
		}
	}
	printf("%lld",ans);
	return 0;
}

谢谢

以上是关于构造完全图(最小生成树)的主要内容,如果未能解决你的问题,请参考以下文章

构造完全图(G)解题报告

loj#10067 构造完全图

使用克鲁斯卡尔算法为以下无向图构造出一棵最小生成树,请画出构造的每一步骤

数据结构算法 试题 急! 试构造下图的最小生成树,要求分步给出构造过程。

最小完全图

算法设计和分析(Prim算法构建最小生成树)