社区讨论
裸的kruskal
P2330[SCOI2005] 繁忙的都市参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi6lswle
- 此快照首次捕获于
- 2025/11/20 06:58 4 个月前
- 此快照最后确认于
- 2025/11/20 06:58 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,fa[305],maxx,k;
struct cd{
int x;
int y;
int v;
};
cd lu[50005];
int father(int x)
{
if(fa[x]!=x)fa[x]=father(fa[x]);
return fa[x];
}
int unionn(int x,int y)
{
int fa1=father(x);
int fb1=father(y);
if(fa1!=fb1)fa[fa1]=fb1;
}
int cmp(const cd &a,const cd &b)
{
if(a.v<b.v)return 1;
else
return 0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>lu[i].x>>lu[i].y>>lu[i].v;
}
for(int i=1;i<=n;i++)
fa[i]=i;
sort(lu+1,lu+m+1,cmp);
for(int i=1;i<=m;i++)
{
if(father(lu[i].x)!=father(lu[i].y))
{
unionn(lu[i].x,lu[i].y);
k++;
if(lu[i].v>maxx)
maxx=lu[i].v;
}if(k==n-1)break;
}
cout<<k<<" "<<maxx<<endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...