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)\)