Solve The Maze

题目链接

https://codeforces.ml/contest/1365/problem/D

题意:

比如输入3 * 3
3 3
#B.
#…
GG.
. 代表路可以走
B 代表这是坏人
G 代表这是好人
#代表此路不通

你可以把非 #的地方全变成#
判断能否让所有的好人都到最右下角的点,所有的坏人都不能到右下角的点(当然可以把最右下角的点也堵上,那么久所有人都出不去)

思路

很容易想到,我们必做的事情是
在最右下角的点进行dfs,判断能到达哪些点
但最难的部分就是怎么通过深搜将好人放出,坏人堵住?

其实很简单,就是我们初始的时候我们就将坏人直接围住就行了,很容易想,假如坏人附件四格之内有好人,那他们两个肯定就是狂绑在一起的,其他情况的话,我们也可以大胆猜测是不影响好人前进的。

那么我们只要将坏人全部堵住,对右下角进行依次深搜,计算能遍历到的好人个数和前面统计的是否一样,加入一样就满足,不一样就不满足,代码就补贴了,比较简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值