問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
ここに、'R', 'G', 'B' (それぞれ赤、緑、青) で構成される n × m のグリッドがあります。
ここで、グリッドの上から a 行目、左から b 列目のマスを、マス (a, b) と呼ぶことにします。
整数の組 a, b, c, d が k 個与えられるので、それぞれについて、マス (a, b) とマス (c, d) が同じ連結成分に属するかどうかを判定してください。
なお、連結成分とは、以下のような条件を満たすマスの集合のことをいいます。
・ 集合内のすべての 2 つのマスは、その集合に含まれる上下左右で隣接するマスへの移動を繰り返すことで行き来することができる。
・ 集合に含まれるすべてのマスは、同じ色である。
・ 集合に含まれないどのマスを追加しても、上のいずれかの条件を満たさなくなる。
n m k
s_1
s_2
...
s_n
a_1 b_1 c_1 d_1
a_2 b_2 c_2 d_2
...
a_k b_k c_k d_k
合計 k 行出力してください。
i 行目には、マス (a_i, b_i) とマス (c_i, d_i) が同じ連結成分に属するならば 'Yes'、そうでなければ 'No' を出力してください。
また、末尾に改行を入れ、余計な文字を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ n, m ≦ 1,000
・ s_i は 'R', 'G', 'B' からなる長さ m の文字列
・ 1 ≦ k ≦ 100,000 = 10^5
・ 1 ≦ a_i, c_i ≦ n
・ 1 ≦ b_i, d_i ≦ m
・ n, m, k, a_i, b_i, c_i, d_i は整数
3 3 2
RRR
GGR
BRR
1 1 3 2
1 1 3 1
Yes
No