AT_aalc001_r 連結性
Description
縦 $ N $ マス、横 $ W $ マスのグリッドがあります。上から $ i $ 行目、左から $ j $ 列目のマスをマス $ (i,j) $ と呼びます。
グリッドの各マスには数字が $ 1 $ つ書かれています。はじめ、マス $ (i,j) $ には文字列 $ S_i $ の $ j $ 文字目が書かれています。
クエリを $ Q $ 個処理してください。クエリは以下の $ 2 $ 種類のいずれかです。
- `1 i T`: $ j=1,2,\ldots,W $ について、マス $ (i,j) $ に書かれている数字を $ T $ の $ j $ 文字目に変更する。
- `2 a b c d`:マス $ (a,b) $ からマス $ (c,d) $ へ、辺で隣接するマスのうち現在のマスと同じ数字が書かれたマスへの移動を繰り返すことで到達できるか判定する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ W $ $ Q $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_N $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $
各クエリは以下のいずれかの形式で与えられる。
> $ 1 $ $ i $ $ T $
> $ 2 $ $ a $ $ b $ $ c $ $ d $
Output Format
$ 2 $ 種類目のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ j $ 行目には、 $ j $ 番目の $ 2 $ 種類目のクエリに対する答えを、到達できるならば `Yes`、到達できないならば `No` として出力せよ。
Explanation/Hint
### Sample Explanation 1
はじめ、マス $ (1,1) $ からマス $ (2,5) $ へは同じ数字 $ 0 $ が書かれたマスだけを通って到達できます。一方、マス $ (1,1) $ からマス $ (4,1) $ へは到達できません。
$ 3 $ 行目を `00000` に変更した後は、マス $ (1,1) $ からマス $ (4,1) $ へ到達できるようになります。
### Sample Explanation 2
マス $ (4,1) $ からマス $ (3,7) $ へ、例えば次の順に移動することで到達できます。
\\\[ (4,1),(3,1),(2,1),(1,1),(1,2),(1,3),(2,3),(3,3),(3,4),(3,5),(2,5),(1,5),(1,6),(1,7),(2,7),(3,7) \\\]
### Constraints
- $ 2 \le N \le 10^5 $
- $ 2 \le W \le 10 $
- $ 1 \le Q \le 5 \times 10^4 $
- $ S_i $ は長さ $ W $ の数字からなる文字列
- $ 1 $ 種類目のクエリについて、 $ 1 \le i \le N $
- $ 1 $ 種類目のクエリについて、 $ T $ は長さ $ W $ の数字からなる文字列
- $ 2 $ 種類目のクエリについて、 $ 1 \le a,c \le N $ , $ 1 \le b,d \le W $
- $ 2 $ 種類目のクエリについて、 $ (a,b) \ne (c,d) $
- $ 2 $ 種類目のクエリが与えられる時点で、マス $ (a,b) $ とマス $ (c,d) $ には同じ数字が書かれている
- 入力される数値はすべて整数