题目链接
题目大意
有一个 n ( 3 ≤ n ≤ 3 ⋅ 1 0 5 ) \ n(3\leq n\leq 3\ ·10^5) n(3≤n≤3 ⋅105)个点 m ( 3 ≤ 5 ⋅ 1 0 5 ) \ m(3\leq 5\ ·10^5) m(3≤5 ⋅105)条边的简单无向图,需要将每个顶点染为红绿蓝三种颜色之一。然后对于每条边,若其两个端点颜色一样,则边也变成对应颜色,否则保持黑色。
基础目标为:
- 仅有黑边的情况下,图依旧保持联通。
在完成基础目标的前提下,还可以完成以下额外目标:
1.每种颜色顶点数相同。(保证 n n n 是 3 3 3 的倍数)
2.某种颜色的顶点数最多,但该颜色的节点的相邻边都是黑色。这个额外目标可以达成多次。
如下所示,左图是染色前,右图是按某种方式染色后的结果,其满足基础目标,每种颜色的顶点数相同,绿色节点出现次数最多且相邻边均为黑色,因此满足两个额外条件。

给定未染色的图,求至少满足一个额外目标的方案,或判断无解。
题解
我们先考虑基础目标,由题意得在相邻两个节点颜色不同的情况下是满足的。
我们先用两种不同的颜色填充整个图形,在奇数层用绿色,在偶数层用蓝色。
考虑第一种额外情况:当绿色和蓝色数量大于 n 3 \frac{n}{3} 3n我们可以在整张图上修改任意个节点标为红色,使三种颜色到达平衡。这时我们只要考虑红色的节点相互之间不矛盾即可,简单的贪心。
修改过程中从底部出发,可以尽可能减少冲突。
当绿色和蓝色数量有一个小于 n 3 \frac{n}{3} 3n时 我们需要删除相对应的颜色使其相等…
等等!
我们先看看第二种情况:当某种颜色大于其他两种时就可以了。
那么此时有可以更改至最大的颜色吗?
巧了真有!
我们将绿色节点数和黄色节点数分为叶节点和非叶节点,设绿色小于 n 3 \frac{n}{3} <

最低0.47元/天 解锁文章
1462

被折叠的 条评论
为什么被折叠?



