#codefestival2015exa. [codefestival_2015_ex_a]高橋王国と青木王国
[codefestival_2015_ex_a]高橋王国と青木王国
問題文
AtCoder 王国には 個の街があります。 個の街には から までの番号がついており、街 に高橋君が、街 に青木君が住んでいます。
街の間は 本の道路で結ばれています。各道路は一方通行ですが、複数本の道路が 2 つの街の間に存在することもあります。特に、順向きと逆向きの道路が 1 本ずつ存在することにより双方向に移動可能な場合もあります。
AtCoder 王国は高橋王国と青木王国の 2 つの国に分断されるという噂が流れています。分断は以下を満たすように行われるそうです。
- 個の街のうちの一部が高橋王国に、残りが青木王国になります。
- 高橋王国には街 が、青木王国には街 が必ず含まれます。
- 高橋王国から青木王国への道路は全て撤去されます。すなわち、始点が高橋王国に、終点が青木王国に所属するような道路が全て撤去されます。
- 撤去する道路の本数が最小になるように分割を行います。
これらを満たす分割の方法は、必ずしも一意ではありません。従って、国民の多くは、国がどのように分断されるかについて心配しています。
そこで、あなたの仕事は、国民からの質問に回答するプログラムを作成することです。2 つの街が質問として与えられるので、それぞれの質問について、「それらが同じ国に所属することになる可能性はあるか」と「それらは違う国に所属することになる可能性はあるか」を回答するプログラムを作成して下さい。
入力
入力は以下の形式で標準入力から与えられる。
: :
- 行目には、街の個数 () と道の本数 () が与えられる。
- 行目からの 行のうち 行目には、 番目の道を表す整数 (, ) が空白区切りで与えられる。これは、道 が街 を出発し街 へ到達するものであることを表す。
- 行目には、国民からの質問の個数を表す整数 () が与えられる。
- 行目からの 行のうち、 行目には、 番目の質問を表す整数 (, ) が与えられる。これは、 番目の質問が街 と街 に関するものであることを表す。
出力
個の質問について、回答を 行ずつ出力せよ。 質問 への回答は 2 つの語からなり、空白で区切って出力すること。
- 1 つめの語は、街 と街 が同じ国に所属することになる可能性はあるかを表す。同じ国に所属する可能性がある場合 YES、無い場合 NO と出力せよ。
- 2 つめの語は、街 と街 が違う国に所属することになる可能性はあるかを表す。違う国に所属する可能性がある場合 YES、無い場合 NO と出力せよ。
出力の末尾には改行を入れること。
部分点
この問題には部分点が設定されている。
- を満たすデータセットに正解した場合は、20 点が与えられる。
- 追加の制約のないデータセットに正解した場合は、上記とは別に 80 点が与えられる。
入力例1
3 5
1 2
1 2
1 2
2 3
2 3
3
1 2
2 3
1 3
出力例1
YES NO
NO YES
NO YES
複数本の道路が 2 つの街の間に存在することもあることに注意して下さい。
入力例2
3 5
3 2
3 2
3 2
2 1
2 1
3
1 2
2 3
1 3
出力例2
YES YES
YES YES
NO YES
高橋王国から青木王国への道路のみ撤去されることに気をつけて下さい。
入力例3
8 10
1 2
1 3
1 4
2 3
3 5
4 6
5 8
6 7
6 8
7 8
7
1 2
2 3
2 6
3 6
4 5
5 6
6 7
出力例3
YES NO
YES NO
NO YES
NO YES
YES YES
YES YES
YES NO