题目链接: 点我
题目大意: 求最小生成树中的最长边。
这根2377一模一样,稍微改一下就A了。。。
/************************************
Problem: 2395 User: ChenyangDu
Memory: 352K Time: 63MS
Language: C++ Result: Accepted
*************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 2000+5,maxm = 10000+5;
int n,m,p[maxn];
struct edge{int s,t,w;}G[maxm];
int find(int a){
return a==p[a]?a:p[a] = find(p[a]);
}
void unite(int a,int b){
int fa = find(a),
fb = find(b);
p[fa] = fb;
}
edge Edge(int s,int t,int w){
edge r;
r.s = s;
r.t = t;
r.w = w;
return r;
}
bool cmp(edge a,edge b){
return a.w<b.w;
}
int main(){
//freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
p[i] = i;
}
for(int a,b,c,i=0;i<m;i++){
scanf("%d%d%d",&a,&b,&c);
G[i] = Edge(a,b,c);
}
sort(G,G+m,cmp);
int ans = 0;
for(int i=0;i<m;i++){
edge e = G[i];
if(find(e.s) != find(e.t)){
unite(e.s,e.t);
ans = max(ans,e.w);
}
}
cout<<ans<<endl;
return 0;
}