Codeforces Global Round 14 F. Phoenix and Earthquake题解(生成树,dfs)

一、题目大意及算法分析

给n个点,m条边的图,所有边被摧毁,然后要建一棵树把点都连起来。第i个点有ai的材料,要连一条边需要x的材料,要修i点到j点的边,必须i点和j点总共有x的材料。在修好的边上可以运输材料。

问能否建出这棵树,要连哪些边,连边顺序是什么。

1.输出YES的条件是什么?

猜想,如果所有点权和不到 ( n − 1 ) ∗ x (n-1)*x (n1)x,则一定可以在任意一个生成树上完成建图,只要考虑顺序就行了。(心里想的是材料反正可以随便运)

证明如下:
在这里插入图片描述

①对于一棵生成树,其某个叶子结点u,若其点权大于等于x,则由u来承担其到fa[u]的边权,并把多于x的部分给到fa[u],因为如果不给的话,就算放在u里面也没用。

②若u的点权小于x,则将u去掉,对于剩下的n-1个点的生成树,仍然满足①的性质(因为u的点权小于x,所以去掉u的点权之后,剩下的n-1个点的点权仍大于等于 ( n − 2 ) ∗ x (n-2)*x (n2)x)。等到n-1个点的生成树建立完成后,再连到u的边。可假设一个极端情况,设点u的点权为 y ( y < x ) y(y<x) y(y<x),且整个n个点的生成树的点权和为 ( n − 1 ) x (n-1)x (n1)x,则剩下n-1个点建完

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值