CF1515F Phoenix and Earthquake 题解

CF1515F

给定一张 \(n\) 个点 \(m\) 条边的无向连通图和正整数 \(x\),点有非负权值 \(a_i\)

如果一条边 \((u,v)\) 满足 \(a_u+a_v \ge x\),可以将 \(u,v\) 缩起来,新点的点权为 \(a_u+a_v-x\)

判断这张图是否可以缩成一个点。如果是,还要输出每次缩的是哪条边。

\(2 \le n \le 3 \cdot 10^5,n - 1 \le m \le 3 \cdot 10^5,1 \le x \le 10^9,0 \le a_i \le 10^9\)

  • 先说结论,如果 \(\sum a_i < x(n-1)\) 一定无解,否则一定有解

  • 证明如下:

  • 如果 \(\sum a_i < x(n-1)\) 无解显然,而对于 \(\sum a_i \geq x(n-1)\) 的情况分两种情况讨论:

    • 如果存在值 \(\geq x\) 的点,那以他向外的任意一条边可开辟一条道路,把道路相连的两个点合并成一个点

    • 如果不存在值 \(\geq x\) 的点,那么所有节点值的最小值为 \(\frac{x(n-1)}{n}\),那么此时任意选两个节点的和一定 \(\geq x\),任意选两个有道路相连的节点合并即可

  • 实现可以类似 Prim 跑最小生成树,最终复杂度 \(O(n \log n)\)

posted @ 2024-08-11 18:56  FOX_konata  阅读(2)  评论(0编辑  收藏  举报