#arc038d. [arc038_d]有向グラフと数
[arc038_d]有向グラフと数
問題文
頂点 辺の有向グラフがあります。このグラフの頂点 には、整数 が書かれています。ゲーム好きな兄妹がこのグラフと つのチェスの駒を使ってゲームをしようとしています。
- 最初、駒を頂点 に置く。
- プレイヤーは自分のターンに、以下のいずれかちょうど つの操作をしなければならない。
- 移動 : 駒を別の頂点にちょうど 回移動させる。駒が頂点 にある場合は、頂点 から頂点 に向かう辺があるような頂点 にのみ移動させることができる。
- 終了宣言 : ゲームを終了させる。
- 交互にターンを繰り返し、どちらかのプレイヤーが終了宣言をするか、後手が 回移動をさせた直後の時点でゲームは終了となり、その時点で駒がある頂点に書かれた整数がこのゲームの スコア となる。
先手のプレイヤーがスコアを出来るだけ大きくするような行動を取り、後手のプレイヤーがスコアを出来るだけ小さくするような行動を取るとき、ゲームのスコアはいくつになるでしょうか?
入力
入力は以下の形式で標準入力から与えられる。
... :
- 行目には、グラフの頂点の個数を表す整数 と辺の個数を表す が空白区切りで与えられる。
- 行目には、各頂点に書かれた整数を表す 個の整数が空白区切りで与えられる。このうち 番目の整数 は、頂点 に書かれた整数を表す。
- 行目からの 行には、辺の情報が与えられる。このうち 行目には、 つの整数 が空白区切りで与えられる。これは、グラフに頂点 から頂点 に向かう有向辺があることを表す。ただし、同じ辺が 回与えられることはないこと、すなわち のとき または が成り立つことが保証される。
部分点
この問題には部分点が設定されている。
- かつ を満たすデータセット に正解した場合は、 点が与えられる。
- 全てのテストケースに正解した場合は、上記とは別に 点が与えられる。
出力
ゲームのスコアを 行に出力せよ。出力の末尾に改行を入れること。
入力例1
3 3
1 3 2
1 2
2 3
3 1
出力例1
2
この例では、ゲームは以下のように進行します。
- 先手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 後手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 先手が終了宣言を選択し、ゲームを終了させる。このときスコアは となる。
先手がどのような行動を取っても、後手が適切な行動を取ることによってスコアを より大きくすることは出来ません。
また、後手がどのような行動を取っても、先手が適切な行動を取ることによってスコアを より小さくすることは出来ません。
入力例2
4 5
1 3 2 1
1 2
2 3
3 1
2 4
4 3
出力例2
1
この例では、ゲームは以下のように進行します。
- 先手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 後手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 先手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 後手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 先手が移動を選択し、駒を頂点 から頂点 に移動させる。
- 後手が移動を選択し、駒を頂点 から頂点 に移動させる。
- (上の流れをしばらく繰り返す)
- 後手が 回目の移動を選択し、駒を頂点 から頂点 に移動させる。
- この時点でゲームが終了し、スコアは となる。
先手がどのような行動を取っても、後手が適切な行動を取ることによってスコアを より大きくすることは出来ません。
また、後手がどのような行動を取っても、先手が適切な行動を取ることによってスコアを より小さくすることは出来ません。