CF540C题解

题面

题意:
地图上有一些点是完好的,有一些点是破损的,破损的点踩了会掉下去,完好的点踩了会破损。问:从点 \((sx,sy)\) 出发能不能在 \((ex,ey)\) 点掉下去?


分类讨论。
满足条件的有三种可能。

  1. 起点到终点有一条只经过完好点的路径,终点完好,且与终点相邻的点中存在两个完好的点。
    比如下面这组数据:
3 3
...
.XX
...
3 3
1 1

合理的路径是 \((3,3)\to(3,2)\to(3,1)\to(2,1)\to(1,1)\to(1,2)\to(1,1)\) .
明显的,第一次走到 \((ex,ey)\) 让其破损,这时且与终点相邻的点中至少存在一个完好的点。这样能保证走到那个点再踩回终点掉下去。
2. 起点到终点有一条只经过完好点的路径,终点破损。
比如下面这组数据:

3 3
XXX
.XX
...
3 3
1 1

合理的路径是 \((3,3)\to(3,2)\to(3,1)\to(2,1)\to(1,1)\) .
明显的,直接走到 \((ex,ey)\) 就掉下去了。
3. 起点与终点相邻,终点完好,且与终点相邻的点中存在一个完好的点。
比如下面这组数据:

2 2
..
XX
2 1
1 1

与第一种情况相比,这里的起点承担了与终点相邻的其中一个完好点的作用。可以从起点一步走到终点使其破损。
其他不存在合理可能。
于是这个题的解法就明朗了。做一遍 BFS 判断起点到终点之间是否存在只经过完好点的路径,再判断是否满足上述三种情况之一即可。

代码

posted @ 2022-04-26 19:07  1358id  阅读(28)  评论(0编辑  收藏  举报