agc025_e Walking on a Tree
Walking on a Tree
https://atcoder.jp/contests/agc025/tasks/agc025_e
Tutorial
设经过每条边的路径数为 \(c_e\) ,则答案上界为 \(\sum \min \{ 2,c_e \}\) .
用数学归纳法证明上界一定可达.
当 \(n=1\) 时,显然成立.
当 \(n>1\) 时,找到一个叶子 \(v\) 设与之相连的边为 \(e\) ,点为 \(w\) .
-
如果 \(c_e=0\) ,可直接将 \(v\) 删去.
-
如果 \(c_e=1\) ,设那条路径为 \((v,x)\) .将其替换为 \((w,x)\)
-
如果 \(c_e>1\) ,从其中选择任意两条路径 \((v,a),(v,b)\) ,令两条路径的交为 \((v,c)\) .我们的策略为
\(v \to a \Leftrightarrow b \to v, a \to v \Leftrightarrow v \to b\) .这样的话 \((v,c)\) 路径上所有点的贡献一定为 \(2\) ,而这两条路径则可以等效的表示为 \((a,b)\) .其他点的 \(c_e\) 值不变.
得证.如上构造即可.