1 条题解
-
1
最小生成树模板题。
#include<bits/stdc++.h> using namespace std; const int N=1e4+5; struct node{ int x,y,c; }a[N]; bool cmp(node n1,node n2){ return n1.c<n2.c; } int fa[N]; int get(int x){ if(fa[x]==x)return x; return fa[x]=get(fa[x]); } int main(){ int n,m;scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c); } sort(a+1,a+m+1,cmp); for(int i=1;i<=n;i++)fa[i]=i; int cnt=0,mx=0; for(int i=1;i<=m;i++){ int x=a[i].x,y=a[i].y; int tx=get(x),ty=get(y); if(tx!=ty){ fa[tx]=ty; cnt++; mx=max(mx,a[i].c); if(cnt==n-1)break; } } if(cnt<n-1)printf("0 0"); else printf("%d %d",cnt,mx); return 0; }
- 1
信息
- ID
- 1083
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 13
- 已通过
- 12
- 上传者