CSP 201812-4 数据中心(最小瓶颈生成树)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define maxn 100010 using namespace std; struct node{ int x,y,z; }e[maxn*2]; int n,m,root,num,fa[maxn]; bool cmp(node u,node v){ return u.z<v.z; } int find(int x){ if(x==fa[x])return x; else return fa[x]=find(fa[x]); } int main(){ scanf("%d%d%d",&n,&m,&root); int x,y,z; for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); e[++num].x=x; e[num].y=y; e[num].z=z; } int ans=0; sort(e+1,e+num+1,cmp); for(int i=1;i<=n;i++)fa[i]=i; for(int i=1;i<=num;i++){ int f1=find(e[i].x); int f2=find(e[i].y); if(f1!=f2){ ans=max(ans,e[i].z); fa[f1]=f2; } } printf("%d\n",ans);return 0; }