#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. hdu3790最短路径问题 (用优先队列实现的)

    Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的.   Inp ...

  2. JSON-C 的安装与使用

    下载源代码安装步骤 wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz tar xvf json-c-0.9.tar.gz cd jso ...

  3. Android font-awesome 4.2 icons png(包含holo-light和holo-dark)

    项目地址: https://github.com/bitjjj/android-font-awesome-4.2-icon-pngs

  4. TestApe - Unit testing for embedded software

    TestApe - Unit testing for embedded software About this site Welcome - This site is TestApe.com. Mos ...

  5. Little Sympathy for Bear Stearns : NPR

    Little Sympathy for Bear Stearns : NPR Little Sympathy for Bear Stearns

  6. android移植pppoe拨号上网的全过程

    硬件环境:Tiny6410开发板 软件环境:fedora14 + Android 2.3.4 + linux-2.6.36 所需资源:rp-pppoe-3.11.tar.gz http://www.r ...

  7. Mac中如何写NTFS的移动硬盘

    Mac中如何写NTFS的移动硬盘 按 照网上的说法,简单的就是购买Paragon NTFS或者Tuxera NTFS之类的收费软件,不想花钱的就用NTFS-3G.作为一个开发人员,既然能够自己解决,当 ...

  8. IOS 与ANDROID框架及应用开发模式对照一

    IOS 和ANDROID操作系统都是眼下流行的移动操作系统,被移动终端和智能设备大量採用,两者都採用了先进的软件技术进行设计,为了方便应用开发两者都採用了先进的设计模式. 两者在框架设计上都採用了什么 ...

  9. Javascript异步数据的同步处理方法

    数据处理方法封装 var DataWatch=(function(){ var gWatch={},cursor= 0,callback_key = 'callback',gMap={}; var c ...

  10. 158个JAVA免豆精品资料汇总

    附件完整版下载地址: http://down.51cto.com/data/431561 附件部分预览~ java中国移动收费系统[源代码] http://down.51cto.com/data/70 ...