[第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更新最大值,输出即可。

模板题

相关推荐
2301_800256117 分钟前
B+树:数据库的基石 R树:空间数据的索引专家 四叉树:空间划分的网格大师
数据结构·数据库·b树·机器学习·postgresql·r-tree
mjhcsp9 分钟前
C++ KMP 算法:原理、实现与应用全解析
java·c++·算法·kmp
lizhongxuan10 分钟前
Manus: 上下文工程的最佳实践
算法·架构
好大哥呀13 分钟前
C++ IDE
开发语言·c++·ide
码农幻想梦14 分钟前
第九章 高级数据结构
数据结构
AlenTech14 分钟前
206. 反转链表 - 力扣(LeetCode)
数据结构·leetcode·链表
CS创新实验室22 分钟前
《计算机网络》深入学:海明距离与海明码
计算机网络·算法·海明距离·海明编码
WW_千谷山4_sch25 分钟前
MYOJ_10599:CSP初赛题单10:计算机网络
c++·计算机网络·算法
大厂技术总监下海30 分钟前
用户行为分析怎么做?ClickHouse + 嵌套数据结构,轻松处理复杂事件
大数据·数据结构·数据库
YuTaoShao1 小时前
【LeetCode 每日一题】1458. 两个子序列的最大点积——(解法三)状态压缩
算法·leetcode·职场和发展