1077 - 友だちになりましょう?
ACできるようにしておきましょう。
問題
あなたは
しかし、このままでは計算量が少なく面白くないと考えたあなたは人aと人bが互いに友だちであるということを下記のように定義した。
記
(人aから人bが『つながっている』) かつ (人bから人aが『つながっている』)
ただし人xから人yが『つながっている』とは
(人xが人yを友人と思っている) または ( (人xから人zが『つながっている』) かつ (人zから人yが『つながっている』) ) こととする。
(人xが人yを友人と思っている) または ( (人xから人zが『つながっている』) かつ (人zから人yが『つながっている』) ) こととする。
以上
このようなとき、人aと人bは互いに友だちだろうか。
入力
n m s0 t0 ...... sm-1 tm-1 q a0 b0 ...... aq-1 bq-1
一行目に周りにいる人間の数nと神仁が知っている友人と思っている関係の数mが与えられる。
続くm行にs, tが与えられる。これはsがtのことを友人と思っていることを示す。
その後qが与えられる。
続くq行にはa, bが与えられる。
出力
ans0 ...... ansq-1
a, bが入力されるたびに人aと人bが互いに友だちであるかを判定し、互いに友だちならばYes, 違えばNoを一行に表示せよ。
制約
$5$ ≤ $n$ ≤ $10 000$$0$ ≤ $m$ ≤ $min(100 000, n*(n-1)/2)$
$5$ ≤ $q$ ≤ $1 000 000$
$0$ ≤ $s$i, $t$i, $a$j, $b$j < $n$
$0$ ≤ $i$ < $m$
$0$ ≤ $j$ < $q$
テストケース
例1
入力
5 6 0 1 1 0 1 2 2 4 4 3 3 2 4 0 1 0 3 2 3 3 4
出力
Yes No Yes Yes
結局O(1)なんですけどね。