【网络流24题】孤岛营救问题 题解

本文解析了一道涉及网格图、钥匙与门的路径寻找问题,利用状压BFS算法求解从起点到终点的最短路径。文章详细介绍了算法思路,包括状态压缩和BFS搜索过程,并附带了完整的C++代码实现。

题目传送门

题目大意: 给出一张网格图,两个格子之间可能没东西,可以直接通过,或者有门,需要钥匙,又或者是墙,不可通过。一些格子上有钥匙,钥匙和门一共有 p p p 种,相同种类的才可以使用,问从 ( 1 , 1 ) (1,1) (1,1) 走到 ( n , m ) (n,m) (n,m) 最短需要多少时间。

题解

众所周知,网络流24题里出一些广搜是很正常的。

由于 p p p 很小,所以状压bfs即可。状压的是当前捡到的钥匙种类。

以及,虽然两个格子时间不会有多扇门,但是一个格子上可能有多个钥匙。

代码如下:

#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;

int n,m,p,k,s;
vector<int> vec[11][11];
int a[11][11][11][11];
struct node{
   
   int x,y,key;}q[1000010];
int st=1,ed=2,f[11][11][1<<11];
int f1[4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值