Tricks
补图 \(\text{BFS}\)
给定一个图 \(G(V,E)\) 和源点 \(s\),要在补图 \(G'(V,E')\) 上跑 \(\text{BFS}\),要求时间复杂度 \(O(n+m)\)。
考虑维护还没 \(\text{BFS}\) 到的点集 \(S\) 以及一个队列 \(q\),记 \(u\) 的邻域为 \(U(u)\)。
一开始有 \(S=V\backslash \{s\},q=\{s\}\)。
从 \(q\) 中取出队头 \(u\),把 \(S\) 中不在 \(U(u)\) 内的点加入 \(q\),\(S\) 中在 \(U(u)\) 内的点保留。
不断做直到 \(q\) 为空即可。
可以发现复杂度为 \(O(n+\sum deg)=O(n+m)\)。

浙公网安备 33010602011771号