#arc036d. [arc036_d]偶数メートル
[arc036_d]偶数メートル
問題文
高橋くんの住む国には 個の街があります。それぞれ から の整数で番号付けされています。 しかし、これらの街の間を移動する手段がまだありません。 そこで国が補助金を出して、異なる つの街を結ぶ道路を、いくつか敷設することになりました。 各道路は個別の長さを持っています。 敷設される道路は結んだ つの国のどちらからでも、もう一方の国に移動することが出来ます。つまり双方向に移動できる道路です。
ところで、高橋くんは偶数が大好きです。 高橋くんは道路を使って、たとえそれが遠回りになろうとも、同じ道を何度通ろうとも、移動距離の合計が偶数メートルになるように移動しようとします。 また、高橋くんは中途半端なことが嫌いなので、道の途中で来た道を引き返すことはしません。
高橋君はときどき、 つの街を指定して、その間を偶数メートルで移動できるかどうかあなたに質問します。 先述の通り、今は道路を増やしている最中なので、質問のタイミングによっては新しく敷設された道路の影響で、偶数メートルで移動できるかどうかが変わり得るに注意してください。
なお、街の中での移動は移動距離の合計に含まないものとします。
道路の敷設と、高橋くんの質問の情報を時系列順に与えるので、高橋くんの質問に答えるプログラムを作成してください。
入力
入力は以下の形式で標準入力から与えられる
:
- 行目には高橋くんの住む国にある街の個数 と与えられる情報の個数 が空白区切りで与えられる。
- 行目からの 行のうち 行目には 番目の情報を表す整数 が空白区切りに与えられる。各変数は以下の制約を満たす。
- のとき、街 と街 の間に長さ メートルの道路を敷くことを表す。
- のとき、高橋くんが 街 と 街 を偶数メートルで移動できるか質問したことを表す。このとき は常に である。
- 同じ つの街に複数本の道が敷かれることがある。
- 高橋くんが質問した時点では、それ以前の入力の全ての道路の敷設が完了されているものとする。
部分点
この問題には部分点が設定されている。
- を満たすデータセットに正解した場合は 点が与えられる。
- を満たすデータセットに正解した場合はさらに 点が与えられる。合計で点となる。
出力
出力は複数行からなる。 高橋くんが質問するたびに、高橋くんが街 と街 の間を偶数メートルで移動できるならば YES
、移動できないならば NO
と1行に出力せよ。
入力例1
5 9
1 1 2 3
1 1 3 2
1 3 5 5
2 1 5 1
2 2 5 1
1 2 4 4
1 1 4 6
2 1 5 1
2 3 5 1
出力例1
NO
YES
YES
YES
各質問時点での街と道路の様子は以下のようになります。 左が つ目の質問の時の様子で、右が つ目の質問の時の様子です。
つ目の質問に対しては という順に道路を進むと移動距離の合計が になります。
つ目の質問に対しては という順に道路を進むと移動距離の合計が になります。
つ目の質問に対しては という順に道路を進むと移動距離の合計が になります。
入力例2
5 7
1 1 2 3
1 2 4 4
1 5 3 1
2 1 3 1
2 5 3 1
1 3 1 2
2 3 4 1
出力例2
NO
NO
NO
つ目の質問の時点では、そもそも街 から街 に行く方法がありません。よって答えは NO
になります。
入力例3
3 6
1 1 2 1
1 1 3 3
1 2 3 2
1 2 1 2
2 1 3 1
2 2 3 1
出力例3
YES
YES
同じ つの街に複数本の道路が敷設され得ることに注意してください。