GRL_4_A:有向グラフの閉路検査

問題

https://onlinejudge.u-aizu.ac.jp/courses/library/5/GRL/4/GRL_4_A

有向グラフ上の閉路を求める問題

制約

  • 1 \le |V| \le 100
  • 0 \le |E| \le 1000

考え方

与えられた有向グラフを G とする。G に閉路が存在する場合は与えられた有向グラフは DAG ではない。ここで

DAG \Leftrightarrow トポロジカルソートが可能

のテクニックが利用できる。すなわち、 GDAG であればトポロジカルソートが可能で、トポロジカルソート後の頂点数 = 元の頂点数 となる。

Aizu Online Judge

別解

今回の場合は制約が小さいので、各有向辺 s_i, t_i のコストを -1 としてベルマンフォード法の負の閉路検出方法でも解を求めることができる。閉路が存在する場合は -1 のコストが効いて V 回目のループでも頂点のコストが更新されるためである。

Aizu Online Judge

どこに着目して考察するべきだったか

 DAG \Leftrightarrow トポロジカルソート可能

何がバグっていたか

得た知見

DAG \Leftrightarrow トポロジカルソート可能

類題