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 o a Leftrightarrow b o v, a o v Leftrightarrow v o b) .这样的话 ((v,c)) 路径上所有点的贡献一定为 (2) ,而这两条路径则可以等效的表示为 ((a,b)) .其他点的 (c_e) 值不变.
得证.如上构造即可.