atcoder#AGC009B. Tournament
Tournament
配点 : 点
問題文
人の人が大会に出場しました。この大会はトーナメント形式であり、 回の試合が行われました。 諸事情により、このトーナメントは全参加者に平等に組まれているとは限りません。 すなわち、各人に対し、優勝するために必要なその人が勝者となるような試合数が等しいとは限りません。 トーナメントの構造は、正式には問題文の末尾で定義されます。
各試合では必ず片方の人が勝者、もう片方の人が敗者となり、最後まで負けなかった 人が優勝となります。
図: トーナメントの例
人には から までの番号がついており、 番の人が優勝し、優勝者以外の人 は人 との試合で負けました。
トーナメントの深さとは、すべての人に対する、その人が優勝するために必要な、その人が勝者となるような試合数の最大値です。
トーナメントの深さとしてありうる最小の値を求めてください。
トーナメントの構造の正式な定義は以下の通りです。 回目の試合では、
- あらかじめ決められた、まだ試合をしていない 人の人
- あらかじめ決められたまだ試合をしていない人 人と、あらかじめ決められた j$ 回目の試合の勝者
- あらかじめ決められた jk$ 回目の試合の勝者
のうちのいずれかの 人が試合を行います。このような構造であって、どのように試合結果を決めても、すでに一度試合に負けた人が再び試合をすることのないようなものをトーナメントと呼びます。
制約
- 入力の試合結果と合致するようなトーナメントが存在する
入力
入力は以下の形式で標準入力から与えられる。
:
出力
トーナメントの深さとしてありうる最小の値を出力せよ。
5
1
1
2
4
3
次のような試合結果が条件を満たします。
- 回目の試合では、人 と 人 が対戦し、人 が勝つ
- 回目の試合では、人 と 人 が対戦し、人 が勝つ
- 回目の試合では、人 と 人 が対戦し、人 が勝つ
- 回目の試合では、人 と 人 が対戦し、人 が勝つ
このトーナメントは、人 が優勝するためには 回勝利する必要があるので、深さ のトーナメントとなります。 逆に、深さ 以下の条件を満たすトーナメントは存在しないので、 を出力します。
7
1
2
1
3
1
4
3
4
4
4
1
3