[HNOI2019] 校园旅行 题解
考虑暴力 DP ,$f_{u,v}$ 表示路径的两端为 $u,v$ 时是否存在一条合法路径,转移需要枚举 $u,v$ 所连向的边。复杂度 $O(m^2)$。
考虑优化,由于每一条边可以经过不止一次。对于连接两个 $1$ 的边,我们可以反复走这一条边。我们考虑那些边是可以去掉的,对于从 $u$ 到 $v$ 的路径,一定是由若干个 $0$ 和 $1$ 的连续段构成的。两边对称;如果左边存在一个长度大于 $1$ 的连续段,那么你可以反复走一条边使得这个连续段的长度加上 $2$ 的倍数。
所以我们可以先把所有两端都连向 $0$ 和 $1$ 的边分别拿出来,对于在同一个连通块的这些边,我们只关心从进入这个连通块的点到走出这个连通块的点的路径长度的奇偶性,所以如果这些边构成一个二分图,只保留一棵生成树;否则就再加一条自环。这样就使得在这个图上原来合法的路径依然合法。
那么考虑两端连接 $0$ $1$ 的边,每来回走一条边就会增加一组 $0$ $1$,所以只需保留一棵生成树即可。这样我们就把边的数量缩减到了 $O(2n) $ 这样就可以暴力 DP 了,转移可以用 $\operatorname {bfs}$ 。复杂度 $O(n^2)$。

浙公网安备 33010602011771号