给定一个 \(n\) 个点 \(m\) 条边的二分图,每个点的度数都 \(\leqslant k\),且每条边的本质不同的备选颜色数目都 \(\geqslant k\),求一组边染色,可以证明一定有解。
有一个乱搞是每次在加入一条边时按照颜色从小到大,如果当前可以加入则加入,否则如果只会影响一条边则将这条边断掉后再重新增广,但似乎很难卡。
一个有保证的做法是这样的,首先如果没有备选颜色限制,二分图边染色是平凡的,每次加入一条边时如果不能加入,令两侧最小的未出现的颜色分别为 \(l_{1},l_{2}\),不妨令 \(l_{1}<l_{2}\),则将这条边染成 \(l_{1}\),将冲突的边染成 \(l_{2}\),再接下来将冲突的边染成 \(l_{1}\),如此反复,则一定会在有限轮后结束(这是因为增广的过程一定是一条链,且不会遍历重复的节点,所以 \(n-1\) 次后必然会结束),做到 \(O(nm)\)。加上限制后可以利用不加限制的进行调整,考虑如果我们求出的边染色方案为 \(S\),如果我们可以每次选择一种可能的备选颜色将其删去,并选择该颜色的一些边进行匹配,使得剩下的子图仍然满足题目的限制,那么就得到了一组合法的方案。
可以发现这样的备选颜色和相应的匹配是一定存在的,实际上有一个非常离谱的事情时如果我们任意选择一种颜色保留其导出子图,求这一子图以左部在一开始的边染色方案中以从大到小为优先级,以右部在一开始的边染色方案中以从小到大为优先级,跑出一组稳定匹配,则这组稳定匹配就是一组合法解。
考虑这个东西如何证明,首先由于其是一组稳定匹配,所以不再匹配中的边要么存在和其左部点相同的边在一开始的边染色方案中比其小,要么存在和其右部点相同的边在一开始边染色方案中比其小,令一条边的势能为其备选颜色集合大小减去所有左部点与其相同的中边染色比其大的个数减去所有右部点与其相同的中边染色比其小的个数,则初始势能 \(>0\),且每一次在备选颜色集合大小减 \(1\) 时两侧至少也有一个减 \(1\),时刻保持势能 \(>0\),则一条边就至少有一个备选颜色。
现在考虑如何求稳定匹配,每次我们对于所有未匹配的左部点选优先级最大的一个,对于所有右部点每次把所有左部点选中它的中优先级最大的一个保留下来(特别的,如果右部点本身在匹配中,则如果这个左部点比当前匹配到的右部点优先级大,则将这个匹配断掉并选择该左部点),对于当前所有失配的左部点,将优先级最大的一个给删除,由于每次增广都会使得匹配的右部点增加,所以 \(n\) 次后必然会结束,做到 \(O(nm)\)。
总上可以做到 \(O(nm+nK)\),\(K\) 为本质不同颜色的个数。
标签:右部点,集训队,颜色,匹配,染色,左部点,2023,优先级,互测 From: https://www.cnblogs.com/zhouhuanyi/p/17984392