DFS を使用して有向グラフの最長サイクルを見つける必要があります。
このウィキペディアの記事でこれを行う方法を説明しているのを見たことがありますが、ノードを 3 つの状態のいずれかでマークするような問題にアプローチしたと思います。 .
誰かが私とリンクを共有していただければ幸いです。ちなみに、Tarjan のアルゴリズムではありません。
以下の問題は、知りたい場合に備えて、私が解決しようとしているものです。
最初の行にある 2 桁の数字は N と M で、それぞれノードの数と有向エッジの数を表します。
2 行目からは、A と B の 2 つの数字の M セットが与えられます。これは、ノード A と B が接続されているが、A から B へのノードのみをトラバースできることを意味します。
入力.txt:
7 9
1 2
2 3
3 1
3 4
4 5
5 1
5 6
6 7
7 2
この場合の答えは、2>3>4>5>6>7>2 なので 6 です。