AT_past201912_k 巨大企業
Description
[problemUrl]: https://atcoder.jp/contests/past201912-open/tasks/past201912_k
ある企業には $ N $ 人の社員、社員 $ 1,\ \ldots,\ N $ が在籍する。このうち一人は社長であり、上司を持たない。その他の社員はみなちょうど一人の直属の上司を持つ。あなたのデータベースによると、社員 $ i $ $ (1\ \leqq\ i\ \leqq\ N) $ の直属の上司は社員 $ p_i $ である (ただし社員 $ i $ が社長である場合は $ p_i\ =\ -1 $ となっている)。この上下関係に循環は存在しない。
このデータを用いて、二つの社員番号 $ a,\ b $ を入力すると社員 $ a $ が社員 $ b $ の部下であるかを判定するサービスを作りたい。ここで、社員 $ a $ が社員 $ b $ の部下であるとは、社員 $ a $ から直属の上司を辿っていくことで社員 $ b $ に到達できることを意味する。
サービスに入力される $ Q $ 個の社員番号の組 $ (a_1,\ b_1),\ \ldots,\ (a_Q,\ b_Q) $ が与えられる。これらのそれぞれに対して `Yes` または `No` を出力するプログラムを作成せよ。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ p_1 $ $ p_2 $ $ : $ $ p_N $ $ Q $ $ a_1 $ $ b_1 $ $ a_2 $ $ b_2 $ $ : $ $ a_Q $ $ b_Q $
Output Format
$ Q $ 行出力せよ。$ i $ 行目 $ (1\ \leqq\ i\ \leqq\ Q) $ は、社員 $ a_i $ が社員 $ b_i $ の部下であれば `Yes`、そうでなければ `No` とすること。
Explanation/Hint
### 注意
この問題に対する言及は、2019年12月29日 05:00 JST まで禁止されています。言及がなされた場合、賠償が請求される可能性があります。
試験後に総合得点や認定級を公表するのは構いませんが、どの問題が解けたかなどの情報は発信しないようにお願いします。
### 制約
- $ 2\ \leqq\ N\ \leqq\ 150,000 $
- 各 $ i\ =\ 1,\ \ldots,\ N $ に対し、$ p_i\ =\ -1 $ または $ 1\ \leq\ p_i\ \leq\ N $
- $ p_i\ =\ -1 $ なる $ i $ はちょうど $ 1 $ つ存在する。
- 社員間の上下関係に循環は存在しない。
- $ 1\ \leqq\ Q\ \leqq\ 100,000 $
- $ 1\ \leqq\ a_i,\ b_i\ \leqq\ N $
- $ a_i\ \neq\ b_i $
### Sample Explanation 1
社員 $ 1 $ (社長) の直属の部下が社員 $ 2,\ 3 $、社員 $ 2 $ の直属の部下が社員 $ 4,5 $、社員 $ 3 $ の直属の部下が社員 $ 6,7 $ である。 例えば、$ 1 $ 個目の組 $ (7,\ 1) $ に対しては、社員 $ 1 $ は社員 $ 7 $ の直属の上司 (社員 $ 3 $) の直属の上司であるため `Yes` と出力する。