边权最大差最小的生成树

 

       最小生成树十分简单,想求最大边权最小的一个数。我们利用树的性质和单调性,维护所有节点的父节点(刚开始的时候弄成自己)和一个当前用于建树的边数sum。先sort把所有边按边权从小到大排序,然后向后遍历,如果这条边的两端点最大的父亲不一样就令他们合并,并且sum++。当sum==n-1时停下来,答案就是此时的边权。

       现在要求边权最大差最小的生成树,对小数据版就可以随便搞:先跑一遍最小生成树,如果停下来时sum!=n-1说明用所有的边也无法使n个点在同一个树上,输出-1。如果等于了n-1,那么此时的边权减最小的边权是一个可行解。再从小到大枚举最小边,以第i个边为最小边到达第f条边sum==n-1停下来,更新答案,ans=min(ans,o[f].v-o[i].v);如果到最后也无法构造出树就可以return 0了。

      然而这是小数据,大数据肯定支持不了。

  我发现改变最小边时中间无数的边被拆下来又接回去,浪费了大量时间。

  然而我还是不会,您们加油。

转载于:https://www.cnblogs.com/qywyt/p/9402471.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值