洛谷P1547 [USACO05MAR] Out of Hay S

P1547

题目描述

Bessie 计划调查 N(2≤N≤2000)个农场的干草情况,它从 1 号农场出发。农场之间总共有 M(1≤M≤10^4)条双向道路,所有道路的总长度不超过 10^9。有些农场之间存在着多条道路,所有的农场之间都是连通的。

Bessie 希望计算出该图中最小生成树中的最长边的长度。

输入格式

第一行两个整数 N,M。

接下来 M 行,每行三个用空格隔开的整数Ai​,Bi​,Li​,表示 Ai​,Bi​ 之间有一条道路,长度为 Li​。

输出格式

一个整数,表示最小生成树中的最长边的长度。

输入输出样例

输入 #1复制

3 3
1 2 23
2 3 1000
1 3 43

输出 #1复制

43

代码: 

#include <bits/stdc++.h>
using namespace std;
int n,m;
pair<int,pair<int,int>> sn[1000010];
int anc[1000010];
int find(int x){//并查集 
	if(anc[x]!=x) anc[x]=find(anc[x]);
	return anc[x];
}
int maxn=0;
void kruskal(){//模板小改 
	for(int i = 1;i<=n;i++) anc[i]=i;
	for(int i = 1;i<=m;i++){
		int a=sn[i].second.first,b=sn[i].second.second,c=sn[i].first;
		int t1=find(a),t2=find(b);
		if(t1!=t2){
			anc[t1]=t2;
			maxn=max(maxn,c);
		}
	}
	cout << maxn;
}
int main(){
	cin >> n >> m;
	for(int i = 1;i<=m;i++){
		int a,b,l;
		cin >> a >> b >> l;
		sn[i]={l,{a,b}};
	}
	sort(sn+1,sn+m+1);
	kruskal();
	return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值