传送门
点分治好题。
题意:给出一棵树,边分两种,求满足由两条两种边数相等的路径拼成的路径数。
思路:
考虑将边的种类转化成边权 − 1 -1 −1和 1 1 1,这样就只用考虑由两条权值为 0 0 0的路径拼成的路径数。
然后发现对于一个点 p p p,经过它的这样的路径满足如下至少一个条件:
- ∃ v \exist v ∃v满足 d i s t ( v , p ) = 0 & & ∃ v 0 ∈ r o a d v , p dist(v,p)=0\&\&\exist v_0\in road_{v,p} dist(v,p)=0&&∃v0∈roadv,p满足 d i s t ( v 0 , v ) = 0 dist(v_0,v)=0 dist(v0,v)=0
- ∃ v 1 , v 2 \exist v_1,v_2 ∃v1,v2满足$dist(v_1,p)=0,dist(v_2,p)=0
- ∃ v 1 , v 2 \exist v_1,v_2 ∃v1,v2满足 d i s t ( v 1 , p ) + d i s t ( v 2 , p ) = 0 & & ∃ v 0 ∈ r o a d v 1 , p dist(v_1,p)+dist(v_2,p)=0\&\&\exist v_0\in road_{v_1,p} dist(v