2019牛客小白月赛18 H.Forsaken喜欢独一无二的树

H.Forsaken喜欢独一无二的树
链接:https://ac.nowcoder.com/acm/contest/1221/H
来源:牛客网
在这里插入图片描述在这里插入图片描述
题目大意:
一个图 n个点,m条边, 使得这个图有唯一最小生成树,需要减去边的的总权值最小。

题解思路:
最小生成树不唯一的原因只可能是有多条权值相同的边,使得构造树时有多种选择,因此把边先按权值从小到大排序。

对于每组权值相同的边(例如所有权值为1的边为一组),
第一次遍历,若是一条边两个端点不在唯一最小生成树的图中,del+=对应权值。(最开始最小生成树的图没有点,所以一定会加) 若端点在,不作任何操作,对于端点已在最小生成树的图中,这个边不会产生影响。
第二次遍历这一组边,这一次若是边的端点不在已经生成的树中,利用parent数组把这两点放进最小生成树里,让del-=边权值(最开始最小生成树的图没有点,所以一定会减),因为最小生成树的图中的边不能减去对应权值,最后对每组边两次遍历,del就是最小权值。
(根据题解思路画图手推一遍,便很容易明白)
参考博客链接:https://blog.csdn.net/CTGU_UN_GO/article/details/102864574

本人代码:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值