题目描述
传送门
题解
最小生成树
代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#define N 1000003
using namespace std;
int fa[N],n,m;
struct data{
int u,v,c;
}e[N];
int cmp(data a,data b)
{
return a.c<b.c;
}
int find(int x)
{
if (fa[x]==x) return x;
fa[x]=find(fa[x]);
return fa[x];
}
int main()
{
freopen("a.in","r",stdin);
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].c);
sort(e+1,e+m+1,cmp);
for (int i=1;i<=n;i++) fa[i]=i;
int ans=0;
for (int i=1;i<=m;i++) {
int r1=find(e[i].u); int r2=find(e[i].v);
if (r1==r2) continue;
ans=max(ans,e[i].c);
fa[r2]=r1;
}
printf("%d %d\n",n-1,ans);
}