题解:AT_agc038_d [AGC038D] Unique Path

· · 题解

小分讨。

首先考虑边类型为 0 的边的两端合并,用并查集维护连通块,假设最后有 k 个。考虑为 1 的边是否合法,显然如果两端都在一个连通块中,那么就是不合法的。判断了所有边合法后就应该判断边数是否合法。考虑求出在限制下最多和最少能有多少条边,分别记为 l 和 r,只要 m \in [l, r] 就合法。先算 l,加入没有类型为 1 的边显然应为 n - 1,因为图可以是一棵树,否则图是一个基环树时边数最少,此时 l = n。考虑边最多的时候,考虑让唯一的简单路径上的点全部是桥,有边数 n - k + \frac {k(k - 1)} 2。判断一下 m 和 [l, r] 的关系即可。做完了。

code