题目大意: 给出一张网格图,两个格子之间可能没东西,可以直接通过,或者有门,需要钥匙,又或者是墙,不可通过。一些格子上有钥匙,钥匙和门一共有 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]

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

被折叠的 条评论
为什么被折叠?



