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)\)

posted @ 2025-12-12 17:45  LXcjh4998  阅读(11)  评论(0)    收藏  举报