CF750H New Year and Snowy Grid

题目描述

请注意下方的输出部分,您将在这里看到关于刷新输出的信息。 Bearland 是一个由 $h$ 行 $w$ 列组成的网格。行从上到下编号为 $1$ 到 $h$,列从左到右编号为 $1$ 到 $w$。每个单元格要么是可通行的(在输入中用 `.` 表示),要么是永久阻塞的(用 `\#` 表示)。 Bearland 是一个寒冷的国度,大雪经常让出行变得更加困难。每天有一些可通行的单元格会被雪临时阻塞。注意,这种阻塞只在当天有效,第二天这些单元格可能会再次变为可通行状态(除非当天再次被临时阻塞)。 只有当两个单元格相邻并且都没有被永久或者临时阻塞时,才能直接从一个格子移动到另一个格子。 Limak 是一只住在 Bearland 的小北极熊。他的家在左上角的单元格,他的学校在右下角的单元格。每天 Limak 需要先从家去学校,然后再返回家。由于他很容易感到无聊,他一天之内不想重复经过同一个单元格,除了他家的那个单元格(他在这里出发和返回)。如果 Limak 能够在不重复经过相同单元格的情况下到达学校并返回家,他认为这一天是有趣的。 你需要顺序处理 $q$ 天的情况。每一天,你都要判断这一天是否有趣,并在单独的一行输出 "YES" 或 "NO"。 为了能够读取下一天的描述,你需要在完成上一天的判断后立即输出结果并刷新输出。 保证如果当天没有被临时雪阻塞的单元格,则这一天一定是有趣的。同时保证 Limak 的家和学校所在的单元格永远不会被阻塞(无论是永久还是临时)。

输入格式

第一行输入包含三个整数 $h,w,q$($2 \leq h, w \leq 1000$,$1 \leq q \leq 10000$),分别表示网格的高度、宽度和天数。 接下来的 $h$ 行,每行包含一个长度为 $w$ 的字符串,描述第 $i$ 行中每个单元格的情况。每个字符为 `.`(表示可通行)或 `\#`(表示永久阻塞)。保证如果没有被临时雪阻塞的单元格,则每天都是有趣的。 接下来描述 $q$ 天的情况。第 $i$ 天的描述以一行整数 $k_i$($1 \leq k_i \leq 10$)开始,表示这一天被雪临时阻塞的单元格数量。接下来的 $k_i$ 行,每行包含两个整数 $r_{i,j}$ 和 $c_{i,j}$($1 \leq r_{i,j} \leq h$,$1 \leq c_{i,j} \leq w$),表示位置在第 $r_{i,j}$ 行第 $c_{i,j}$ 列的单元格。这 $k_i$ 个格子互不相同,均未被永久阻塞,也不会是 Limak 的家或学校。

输出格式

对于每一天,如果这一天是有趣的,输出一行 "YES",否则输出 "NO"(均不带引号)。在输出结果后,必须同时输出换行符并刷新输出,然后才可以进行下一天的判断。 刷新输出的方法如下(在输出 YES/NO 和换行符后立刻执行): - 对于 C++,使用 fflush(stdout)。 - 对于 Java,使用 System.out.flush()。 - 对于 Python,使用 stdout.flush()。 - 对于 Pascal,使用 flush(output)。 - 其他语言请参见相关文档。

说明/提示

在第一个样例中,有 $4$ 天。下图展示了 Limak 在第二天和第三天如何去学校并返回家的方式(分别位于左侧和右侧)。红色表示永久阻塞的格子,橙色表示当天被临时雪阻塞的格子。黑色和绿色箭头分别表示 Limak 去学校和返回家的路线。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF750H/12faf454c20e549286698bdfff6e5baa8b1aae30.png) 对于第二个样例,下图展示了每日网格的情况,其中 `\#` 表示被永久或临时阻塞的格子。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF750H/f3a41e654116d8de6780666e33ff7f4faa3b7c75.png) 由 ChatGPT 5 翻译