AT3968 [AGC025E] Walking on a Tree

题解

你考虑任选一个叶子节点,我们考虑其和其父亲相连的边。

  1. 如果说没有路径经过这一条边,那么直接删去这个叶子节点并没有什么影响。
  2. 如果说经过其的路径个数为 \(1\) ,那么这条路径的方向必然两个都可以,将答案加一后将该点删去即可。
  3. 如果说经过其的路径个数为 \(2\) ,那么我们可以从中随机选取两条路径,让他们的方向相反。由于两条路径可以分为三个部分:公共部分、第一条的一部分、第二条的一部分。可以知道,公共部分的答案必定为 \(2\) ,我们可以直接更新删点;然后对于非公共部分的两部分,可以发现他们是连续的,同时方向也是连续的,所以可以把他们直接合成一条链继续计算。

按照这样的方案执行即可。但是感觉代码过于繁琐,就没有写了,写一下题解加深印象。

posted @ 2021-01-06 18:52  Point_King  阅读(80)  评论(0编辑  收藏  举报