二分图边染色
记 \(S_u\) 表示 \(u\) 的邻边组成的颜色集合。
依次加入每一条边。
假设现在要加入 \((u,v)\)。如果存在一种颜色 \(c\) 使得 \(c\notin S_u\) 且 \(c\notin S_v\),那么我们简单地将 \((u,v)\) 边的颜色设为 \(c\) 即可。
否则存在 \(c\notin S_u\),\(c\in S_v\)。找到 \(v\) 的颜色为 \(c\) 的出边 \((v,w)\),将 \((u,v)\) 的颜色设成 \(c\),并尝试改变 \((v,w)\) 的颜色。由于图是二分图,这样的调整一定可以在 \(n\) 轮以内结束。

浙公网安备 33010602011771号