题目 | 蒋贤蒙 | 王赵安 | 王智彪 |
---|---|---|---|
A | 0 | 0 | 0 |
B | 0 | 0 | 0 |
C | 0 | 0 | 0 |
D | 0 | 0 | 0 |
E | 0 | 0 | 0 |
G | 0 | 0 | 0 |
J | 2 | 0 | 0 |
K | 0 | 0 | 0 |
给定 $n$ 个点 $m$ 条边的连通图,要求删去任意条边,最大化图的点权和。
其中第 $i$ 个点的点权的绝对值为 $a_i$,如果该点所在连通块大小为偶数则权值为正,否则为负。
不难发现如果 $n$ 为偶数则不需要任何删边。
如果 $n$ 为奇数,如果最优解中存在一个大小不为 $1$ 的奇连通块,任取该连通块的一个点删去所有相关连边一定不会使得答案变劣。
因此不妨考虑强制删一个点,如果这个点不是割点,显然删除该点后不需要额外删点,统计此时的答案。
如果这个点是割点,则需要考虑删去这个点得到的剩余连通分量,如果每个连通分量大小都是偶数,显然也不需要额外删点。
否则,删去该点会导致剩余连通分量的原割点不变,同时增加新割点,而且需要删去的点数也增加,一定使得答案变劣,因此不考虑。
至于维护删除割点后的其他连通分量奇偶性可以在跑 $\text{dfs}$ 树时顺便维护子树大小,根据子树奇偶性判断。
特别注意即使 $u$ 是割点,删除 $u$ 也不能保证 $u$ 的每个子树都构成独立连通分量。
事实上如果 $\text{low[v]}<\text{dfn}[u]$ 则说明 $v$ 和 $u$ 的祖先结点属于同一个点双连通分量,不要重复判定。比赛的时候就这里假了,长了个教训。
时间复杂度 $O(n+m)$。