#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
int n,m,t,vis[25][25][1024];
char mp[25][25];
int dx[]= {0,0,1,-1};
int dy[]= {1,-1,0,0}; struct node
{
int x,y,t,k;
} p1,p2; int bfs(int sx,int sy,int ex,int ey)
{
int i,j,flag=0;
queue<node>q;
p1.x=sx;
p1.y=sy;
p1.t=0;
p1.k=0;
q.push(p1);
while(!q.empty())
{ p1=q.front();
q.pop();
//printf("%d %d\n",p1.x,p1.y);
if(p1.x==ex&&p1.y==ey)
{
flag=p1.t;
break;
} for(i=0; i<4; i++)
{ p2.x=p1.x+dx[i];
p2.y=p1.y+dy[i];
p2.t=p1.t+1;
p2.k=p1.k; if(p2.x<0||p2.x>=n||p2.y<0||p2.y>=m) continue;
if(mp[p2.x][p2.y]=='*') continue;
if(mp[p2.x][p2.y]<='J'&&mp[p2.x][p2.y]>='A')
{
int k=p2.k&(1<<mp[p2.x][p2.y]-'A');
if(!k) continue;
} if(mp[p2.x][p2.y]<='j'&&mp[p2.x][p2.y]>='a')
{
p2.k=p2.k|(1<<(mp[p2.x][p2.y]-'a'));
} while(vis[p2.x][p2.y][p2.k]==0)
{
vis[p2.x][p2.y][p2.k]=1;
q.push(p2);
}
}
} if(flag>=t||flag==0) flag=-1;
return flag;
} int main()
{
int i,j,sx,sy,ex,ey,flag;
while(~scanf("%d%d%d",&n,&m,&t))
{
memset(vis,0,sizeof(vis));
for(i=0; i<n; i++)
scanf("%s",mp[i]); for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
if(mp[i][j]=='@')
{
sx=i;
sy=j;
mp[i][j]='.';
}
if(mp[i][j]=='^')
{
ex=i;
ey=j;
}
} printf("%d\n",bfs(sx,sy,ex,ey));
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。http://xiang578.top/

hdu 1429 胜利大逃亡(延续)(BFS+比特压缩)的更多相关文章

  1. hdu 1429 胜利大逃亡(续)(bfs+位压缩)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  2. hdu - 1429 胜利大逃亡(续) (bfs状态压缩)

    http://acm.hdu.edu.cn/showproblem.php?pid=1429 终于开始能够做状态压缩的题了,虽然这只是状态压缩里面一道很简单的题. 状态压缩就是用二进制的思想来表示状态 ...

  3. hdu 1429 胜利大逃亡(续) (bfs+状态压缩)

    又开始刷题了 题意:略过. 分析:主要是确定状态量,除了坐标(x,y)之外,还有一个key状态,就好比手上拿着一串钥匙.状态可以用位运算来表示:key&(x,y)表示判断有没有这扇门的钥匙,k ...

  4. hdu.1429.胜利大逃亡(续)(bfs + 0101011110)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. HDOJ 1429 胜利大逃亡(续) (bfs+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 思路分析:题目要求找出最短的逃亡路径,但是与一般的问题不同,该问题增加了门与钥匙约束条件: 考虑 ...

  6. HDU 1429 胜利大逃亡(续)(bfs+状态压缩,很经典)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  7. hdu 1429 胜利大逃亡(续)

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王 ...

  8. HDU 1429 胜利大逃亡(续)(bfs)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  9. Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏

    胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Subm ...

随机推荐

  1. mysql+ssh整合样例,附源代码下载

    项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源代码下载地址:http://download.csdn.net/detail/ ...

  2. Typings实现智能

    在Visual Studio Code中通过Typings实现智能提示功能   前言 我们知道在IDE中代码的智能提示几乎都是标配,虽然一些文本编辑器也有一些简单的提示,但这是通过代码片段提供的.功能 ...

  3. JavaEE session机制

    JavaEE session机制 Http协议: 在讲session之前,必须说下Http协议,HTTP是一个client和server端请求和应答的标准(TCP).由HTTPclient发起一个请求 ...

  4. VMware vSphere服务器虚拟化实验十一高可用性之三Fault Tolerance

                                                                VMware vSphere服务器虚拟化实验十一高可用性之三Fault Tole ...

  5. Merging a WPF application into a single EXE(WPF应用程序合并成单个Exe文件)

    I always dislike handing off little applications to people. Not because I can’t, but because of the ...

  6. SPOJ 375(树链剖分)

    题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28982#problem/I 题意:一棵包含N 个结点的树,每条边都有一个权值, ...

  7. 王立平--Unity中间GUI Skin

    C#文字: public class NewBehaviourScript2 : MonoBehaviour { public Texture t; public GUISkin skin; // U ...

  8. Learning Cocos2d-x for WP8(2)——深入刨析Hello World

    原文:Learning Cocos2d-x for WP8(2)--深入刨析Hello World cocos2d-x框架 在兄弟篇Learning Cocos2d-x for XNA(1)——小窥c ...

  9. WPF与混淆器

    原文:WPF与混淆器 时至今日,混淆依然是.Net程序的一道重要保护手段,而混淆器对WPF应用程序的支持是怎样的呢?我们今天就通过实例讲解一下. 首先建立如下图所示的简单的用户界面: 在界面代码中设置 ...

  10. Java集合类汇总记录-- apache.commons4(TreeList)

    通常.Tree是Tree,List是List,两者不太可能混在一起.但apache-commons库却用tree实现了实现了List的接口,也就是TreeList类.与标准的LinkedList相比. ...