题解 | #黑白边#

黑白边

https://ac.nowcoder.com/acm/contest/9667/A

include

include<bits/stdc++.h>

using namespace std;

int f[2000000];
int n,m;

struct node{
int x,y,z;
}a[2000000];

bool cmp(node b,node bb)
{
return b.z<bb.z;
}

void init()
{
for(int i=0;i<=n;i++)
f[i]=i;
}

int Find(int x)
{
if(x==Find(x))
return x;
return f[x]=Find(x);
}

int Kruskal()
{
int sum=0,ans=0;
for(int i=1;i<=m;i++)
{
int fx=a[i].x;
int fy=a[i].y;
fx=Find(fx);
fy=Find(fy);
if(fx!=fy)
{
f[a[i].x]=fy;
if(a[i].z==1)
{
ans++;
sum++;
}
}
if(sum>=n-1)
break;
}
if(sum>=n-1) return ans;
else return -1;
}

int main(void)
{
cin>>n>>m;
init();
for(int i=1;i<=m;i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;
}
sort(a+1,a+m+1,cmp);
int ans=Kruskal();
return ans;

}

全部评论

相关推荐

秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务