閉路検出

無向グラフ

【例】

UnionFind

UnionFind(UnionFind木 - 競プロはじめました)を使えば,次で検出できる.
  1. 辺を張るたびに頂点をマージする
  2. 新たに$a,b$に辺を張るとき,すでに$a,b$が同じグループに属していれば,この操作で閉路ができる.


DFS

  1. 訪問した頂点を管理しながらDFSをする.
  2. ある連結成分(この連結成分の頂点はすべて未訪問)の頂点を一つ選んでDFSを初めて,DFSの途中で訪問した頂点にたどり着いたら閉路がある.


有向グラフ

トポロジカルソート

トポロジカルソートできなければ閉路がある:トポロジカルソート - 競プロはじめました
【例】