洛谷P2820 局域网

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=505;
 4 const int maxm=100005;
 5 int n,k,sum,tot;
 6 struct node{
 7     int cnt,fa;
 8 }f[maxn];
 9 int find(int x){return f[x].fa==x?x:f[x].fa=find(f[x].fa);}
10 void Union(int x,int y)
11 {
12     x=find(x),y=find(y);if(x==y) return;
13     if(f[x].cnt<=f[y].cnt) {f[x].fa=y;f[y].cnt+=f[x].cnt;}
14     else {f[y].fa=x;f[x].cnt+=f[y].cnt;} 
15 }
16 struct edge{
17     int x,y,dis;
18 }E[maxm];
19 inline bool cmp(const edge &a,const edge &b) {return a.dis<b.dis;}
20 int main()
21 {
22     scanf("%d%d",&n,&k);
23     for(int i=1;i<=k;i++) scanf("%d%d%d",&E[i].x,&E[i].y,&E[i].dis),sum+=E[i].dis;
24     for(int i=1;i<=n;i++) f[i].fa=i,f[i].cnt=1;
25     sort(E+1,E+1+k,cmp);
26     for(int i=1;i<=k;i++)
27     {
28         if(f[find(1)].cnt==n) break;
29         if(find(E[i].x)!=find(E[i].y)) Union(E[i].x,E[i].y),tot+=E[i].dis;
30     }
31     printf("%d",sum-tot);
32     return 0;
33 }

 

转载于:https://www.cnblogs.com/yu-xing/p/10262041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值