加一个维度,钥匙的状态,状压一下。n很小,钥匙也只有10个,bfs就好了。

忘了数组初始化。以后坚决不犯这种低级错误。

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int maxn = +;
int g[maxn][maxn][];
int k[maxn][maxn];
int dx[] = {,-,,};
int dy[] = {,,,-};
int dir[] = { ,,-,, }; struct node
{
int x,y,step;
int s;
node(int X = , int Y = ,int S = ,int Step = ) {
x = X; y =Y; s = S; step = Step;
}
};
int n,m,p;
bool vis[maxn][maxn][+];
queue<node> q;
int tx,ty; int bfs()
{
memset(vis,,sizeof(vis));
while(q.size()) q.pop();
node u(,,k[][],);
q.push(u);
while(q.size()){
u = q.front();q.pop();
if(u.x == tx && u.y == ty) {return u.step;}
for(int i = ; i < ; i++){
if( g[u.x][u.y][i] == - || u.s&(<<g[u.x][u.y][i])){
int nx = u.x+dx[i], ny = u.y+dy[i], ns = u.s|k[nx][ny];
if(<=nx&&nx<=n&&<=ny&&ny<=m&&!vis[nx][ny][ns>>]){
vis[nx][ny][ns>>] = ;
q.push(node(nx,ny,ns,u.step+));//+(g[u.x][u.y][i]!=-1)
}
}
}
}
return -;
} int main()
{
//freopen("E_in.txt","r",stdin);
//freopen("E_out.txt","w",stdout);
while(scanf("%d%d%d",&n,&m,&p) == ){
int K;
scanf("%d",&K);
memset(g,-,sizeof(g));
for(int i = ; i < K; i++){
int x1,x2,y1,y2,tp;
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&tp);
int Dir = dir[((y2-y1+)<<)+x2-x1];
g[x1][y1][Dir] = tp;
g[x2][y2][Dir^] = tp;
}
int S;
memset(k,,sizeof(k));
scanf("%d",&S);
for(int i = ; i < S; i++){
int x0,y0,tp;
scanf("%d%d%d",&x0,&y0,&tp);
if(tp)
k[x0][y0] |= <<tp;
}
tx = n; ty = m;
int ans = bfs();
printf("%d\n",ans);
}
return ;
}

HDU 5094 Maze (状压)的更多相关文章

  1. hdu 5094 Maze 状态压缩dp+广搜

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...

  2. hdu 5094 Maze (BFS+状压)

    题意: n*m的迷宫.多多要从(1,1)到达(n,m).每移动一步消耗1秒.有P种钥匙. 有K个门或墙.给出K个信息:x1,y1,x2,y2,gi    含义是(x1,y1)与(x2,y2)之间有gi ...

  3. HDU 4284Travel(状压DP)

    HDU 4284    Travel 有N个城市,M条边和H个这个人(PP)必须要去的城市,在每个城市里他都必须要“打工”,打工需要花费Di,可以挣到Ci,每条边有一个花费,现在求PP可不可以从起点1 ...

  4. hdu 2209 bfs+状压

    http://acm.hdu.edu.cn/showproblem.php?pid=2209 不知为啥有种直觉.会出状压+搜索的题,刷几道先 简单的BFS.状压表示牌的状态, //#pragma co ...

  5. hdu 5025 bfs+状压

    http://acm.hdu.edu.cn/showproblem.php?pid=5025 N*N矩阵 M个钥匙 K起点,T终点,S点需多花费1点且只需要一次,1-9表示9把钥匙,只有当前有I号钥匙 ...

  6. HDU 4336 容斥原理 || 状压DP

    状压DP :F(S)=Sum*F(S)+p(x1)*F(S^(1<<x1))+p(x2)*F(S^(1<<x2))...+1; F(S)表示取状态为S的牌的期望次数,Sum表示 ...

  7. 拯救大兵瑞恩 HDU - 4845(状压bfs || 分层最短路)

    1.状压bfs 这个状压体现在key上  我i们用把key状压一下  就能记录到一个点时 已经拥有的key的种类 ban[x1][y1][x2][y1]记录两个点之间的状态 是门 还是墙 还是啥都没有 ...

  8. HDU - 5117 Fluorescent(状压dp+思维)

    原题链接 题意 有N个灯和M个开关,每个开关控制着一些灯,如果按下某个开关,就会让对应的灯切换状态:问在每个开关按下与否的一共2^m情况下,每种状态下亮灯的个数的立方的和. 思路1.首先注意到N< ...

  9. hdu 1429 bfs+状压

    题意:这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带锁的门,钥匙藏在地牢另外的某些地方.刚开始 Ignatius被关在(sx,sy)的位置,离开地牢的门 ...

随机推荐

  1. HDU - 5094 Maze(状压+bfs)

    Maze This story happened on the background of Star Trek. Spock, the deputy captain of Starship Enter ...

  2. 如何選擇最佳的 Wi-Fi 無線網路頻道,獲得最佳的傳輸速度(转载)

    转自:https://blog.gtwang.org/useful-tools/how-to-find-the-best-wi-fi-channel-for-your-router/

  3. JS Guid生成

    function numToGuid(uid) { var str = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"; var l = uid.to ...

  4. 洛谷P3004 [USACO10DEC]宝箱Treasure Chest

    P3004 [USACO10DEC]宝箱Treasure Chest 题目描述 Bessie and Bonnie have found a treasure chest full of marvel ...

  5. JDK 简介

    JDK简介 JDK java开发工具包 JRE java 运行时环境 JVM java虚拟机 三者的关系:JDK 包含 JRE,JRE 包含 JVM Java的核心优势是跨平台,由JVM虚拟机实现的. ...

  6. PostgreSQL - invalid input syntax for type timestamp with time zone

    问题 在执行以下sql时报错: select COALESCE(null,null,now(),''); 报错如下: SQL Error [22007]: ERROR: invalid input s ...

  7. 【VueJS】VueJS开发请求本地json数据的配置

    VueJS开发请求本地json数据的配置,旧版本是build/dev-server.js,新版本是build/webpack.dev.conf.js. VueJS开发请求本地json数据的配置,早期的 ...

  8. GIT使用笔记一:GIT初始化配置

    本人系统环境:centos6.5 下 LNMP centos下git安装很简单sudo yum install gitOK 可先进行git 的全局配置 用户信息 git config --global ...

  9. 收藏 SpringBoot :thymeleaf 使用详解

    转载大神们笔记 --比较详细的 http://www.importnew.com/25826.html http://www.niugebbs.com/xdmrhf/1046839.html http ...

  10. 批量插入,update

    #####setting 1create table t as select * from all_objects where 1 =2; ###.模拟逐行提交的情况,注意观察执行时间DECLAREB ...