目录

[第15次CCFCSP]数据中心

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int cnt=0,ans=0;
int head[N];
int n,m,root;
int maxx=-1;
struct node
{
	int u;
	int v;
	int w;
}edge[N];

int father[N];
void init()
{
	for(int i=1;i<=N;i++)
	{
		father[i]=i;
	}
}
int find_set(int n)
{
	return father[n]==n?n:(father[n]=find_set(father[n]));
}
void union_set(int a,int b)
{
	int x=find_set(a);
	int y=find_set(b);
	if(a!=b)
	{
		father[b]=a;
	}
}
bool cmp(node a,node b)
{
	return a.w<b.w;
}
void kruskal()
{
	sort(edge+1,edge+1+m,cmp);
	for(int i=1;i<=m;i++)
	{
		if(cnt==n-1)break;
		int a=find_set(edge[i].u);
		int b=find_set(edge[i].v);
		if(a==b)continue;
		else
		{
			father[b]=a;
			cnt++;
			ans+=edge[i].w;
			maxx=max(maxx,edge[i].w);
		} 
	}
}
int main()
{
	cin>>n>>m>>root;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>edge[i].u>>edge[i].v>>edge[i].w;
	}
	init();
	kruskal();
	cout<<maxx;
	return 0;
}

通过kruskal算法求出最短路,在把符合条件的边加入总值时每次比较maxx更新最大值,输出即可。

模板题

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
daily_23331 小时前
coding ability 展开第九幕(位运算——进阶篇)超详细!!!!
算法·位运算
柏木乃一1 小时前
双向链表增删改查的模拟实现
开发语言·数据结构·算法·链表
whltaoin3 小时前
Java实现N皇后问题的双路径探索:递归回溯与迭代回溯算法详解
java·算法
同勉共进4 小时前
虚函数表里有什么?(二)——普通单继承下的虚函数表
c++·单继承·虚函数表·dynamic_cast·rtii
梭七y5 小时前
【力扣hot100题】(032)排序链表
算法·leetcode·链表
SsummerC5 小时前
【leetcode100】数组中的第K个最大元素
python·算法·leetcode
编程绿豆侠5 小时前
力扣HOT100之链表:206. 反转链表
算法·leetcode·链表
永恒迷星.by6 小时前
文件操作(c语言)
c语言·c++·算法·文件操作
还有你Y6 小时前
MIMO预编码与检测算法的对比
算法·预编码算法
凯强同学6 小时前
第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:7.翻转
python·算法·蓝桥杯