P14902 题解
albertting · · 题解
经典结论题。
一棵树上,设
其中
用 std::set 维护每个颜色的点集是容易的,主要关心证明。
主要需要证明的是
任取树边
- 若
e\notin E(T_S) ,则某一侧不含S 里的点,所以环序列相邻点不可能跨过e ,贡献0 。 - 若
e\in E(T_S) ,则两侧都含S 里的点。由\operatorname{dfn} 序的性质,这一侧中的点在S_1,\dots,S_k 中形成连续区间。于是环序列S_1,S_2,\dots,S_k,S_1 中,这个连续区间和补集之间恰好有两个交界,所以边e 被相邻点路径跨过恰好2 次,贡献2 。
因此