T566569 「PA Mashup #1」商旅

题目描述

一个长为 $n$,宽为 $m$ 的长方形被划分为 $n\times m$ 个 $1\times 1$ 的方格。我们记第 $i$ 行第 $j$ 列的方格为 $(i,j)$。 每个方格可能是城镇,堡垒或者空地。商人在城镇间来往贸易,可以从一个方格移动到四连通的方格,但是**不能经过堡垒**。 有 $q$ 次**在线**操作: - $\texttt{1}$ $r$ $c$:在 $(r,c)$ 上尝试建立一座堡垒,保证 $(r,c)$ 是空地。 - 如果建立堡垒后,商人仍能从一个城镇到达任意一个城镇,则建立成功,$(r,c)$ 变为堡垒,输出 $1$; - 否则忽略本次操作,$(r,c)$ 仍为空地,输出 $0$。 - $\texttt{2}$ $r_1$ $c_1$ $r_2$ $c_2$: - 将 $(r_1,c_1)$ 上的城镇移动到相邻的 $(r_2,c_2)$。 - 保证 $(r_1,c_1)$ 是城镇,$(r_2,c_2)$ 是空地。 - 保证 $|r_1-r_2|+|c_1-c_2|=1$。

输入格式

**注意,本题的输入量可能很大。** 第一行两个正整数 $n,m$。 接下来 $n$ 行,第 $i$ 行一个长度为 $m$ 的字符串 $s_i$: - $s_{i,j}=\texttt{.}$,表示 $(i,j)$ 是空地; - $s_{i,j}=\texttt{W}$,表示 $(i,j)$ 是堡垒; - 否则 $s_{i,j}=\texttt{K}$,表示 $(i,j)$ 是城镇。 第 $(n+2)$ 行,一个整数 $q$。 接下来 $q$ 行,每行若干个整数,表示一次**加密的**操作: - $\texttt{1}$ $r'$ $c'$,表示一次 $\texttt{1}$ 操作,其中 $r=r'\oplus k$,$c=c'\oplus k$。 - $\texttt{2}$ $r_1'$ $c_1'$ $r_2'$ $c_2'$:表示一次 $\texttt{2}$ 操作,其中 $r_1=r_1'\oplus k$,$r_2=r_2'\oplus k$,$c_1=c_1'\oplus k$,$c_2=c_2'\oplus k$。 这里,$k$ 表示这次操作**前**,操作 $\texttt{1}$ 输出 $1$ 的个数,$\oplus$ 表示按位异或运算。

输出格式

输出一行一个 $\texttt{01}$ 串:对于每个 $\texttt{1}$ 操作,输出一行一个整数,表示答案。 特别地,输出可能为空。

说明/提示

#### 样例解释 加密前的样例: ```plain 3 4 ..WK WK.. ...K 5 1 3 2 1 2 3 2 2 2 2 3 2 2 3 3 3 1 2 3 ``` #### - $1\le n,m\le 10^3$; - $0\le q\le 10^6$。