迷宫逃离(0191)

描述

江鸟突然想到了一个迷宫逃离的游戏,话说有三个人被困于一个n*m的迷宫里,他们三人都可以向上、向下、向左、向右四个方向进行走动,当然他们所在的初始位置没有障碍物,同时只能走到没有障碍物的格子上,现在江鸟要问你最少需要去掉多少个格子的障碍物,可以使他们三人之间两两互相可达。

输入

输入包括多组测试数据,每组测试数据第一行为两个整数n和m(2<=n,m<=100),接下来n行,每行m个字符,其中:‘w’、‘W’、‘f’分别代表那三个人;‘.’代表没有障碍物的格子,‘#’代表有障碍物的格子。

输出

每组数据输出一行。

样例输入

4 4
w...
####
.##f
W##.
4 4
w...
....
.##f
.W..

样例输出

2

0

BFS、枚举中间点

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
using namespace std;
#define INF 0x7fffffff
#define N 110 struct node
{
int x,y;
}; int n,m;
node p[];
char mpt[N][N];
int vis[N][N][];
int dir[][]={,,-,,,,,-}; void bfs(int index)
{
queue<node> q;
node now,next;
now.x=p[index].x;
now.y=p[index].y;
q.push(now);
vis[now.x][now.y][index]=;
while(!q.empty())
{
now=q.front();
q.pop();
for(int i=;i<;i++)
{
next=now;
next.x+=dir[i][];
next.y+=dir[i][];
if(next.x< || next.x>n || next.y< || next.y>m) continue;
int tmp=vis[now.x][now.y][index];
if(mpt[next.x][next.y]=='#') tmp++;
if(tmp<vis[next.x][next.y][index])
{
vis[next.x][next.y][index]=tmp;
q.push(next);
}
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int k=;k<=;k++)
{
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
vis[i][j][k]=INF;
}
}
}
for(int i=;i<=n;i++)
{
scanf("%s",mpt[i]+);
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(mpt[i][j]=='w') p[].x=i,p[].y=j;
else if(mpt[i][j]=='W') p[].x=i,p[].y=j;
else if(mpt[i][j]=='f') p[].x=i,p[].y=j;
}
}
bfs();
bfs();
bfs();
int ans=INF;
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
int tmp=;
for(int k=;k<=;k++)
{
tmp+=vis[i][j][k];
}
if(mpt[i][j]=='#') tmp-=;
if(tmp<ans) ans=tmp;
}
}
cout<<ans<<endl;
}
return ;
}

[swustoj 191] 迷宫逃离的更多相关文章

  1. [Swust OJ 191]--迷宫逃离(打表搜索)

      题目链接:http://acm.swust.edu.cn/problem/191/ Time limit(ms): 1000 Memory limit(kb): 65535   江鸟突然想到了一个 ...

  2. [Swust OJ 1023]--Escape(带点其他状态的BFS)

    解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535     Descript ...

  3. hdu 1728:逃离迷宫(DFS,剪枝)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. HDU 1728:逃离迷宫(BFS)

    http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description   给定一个m × n (m行, n列)的迷宫,迷宫中有 ...

  5. hdoj 1728 逃离迷宫

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. 逃离迷宫(HDU 1728 BFS)

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. hdu 4524 郑厂长系列故事——逃离迷宫 小水题

    郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  8. HDU 1728 逃离迷宫(DFS||BFS)

    逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...

  9. hdu 1728 逃离迷宫 (BFS)

    逃离迷宫 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

随机推荐

  1. Oracle PL/SQL 事物处理 银行转账

    Oracle数据库中的事务处理:添加,修改,删除时需要使用事务处理(显示事务). 1.事务的分类显示事务(添加,修改,删除)和隐式事务(除了添加,修改,删除). 2.事务的执行方式:自动提交(jdbc ...

  2. 我的VIM.rc

    我的VIM.rc """""""""""""""& ...

  3. 九度OJ 1480 最大上升子序列和 -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1480 题目描述: 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列 ...

  4. CAS原理

    JDK5之前Java是靠synchronized关键字保证同步,这种机制存在以下问题: 在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题 一个线程持有锁会导致其他需要此锁的 ...

  5. WPF中实现根据拼音查找汉字

    1.WPF的一个触摸屏项目,需要输入姓名,但是屏幕不支持汉字输入,使用虚拟键盘不稳定,为了解决该问题特此进行处理. 2.新建一个类转换类,里面初始化一个数组,数组包含拼音,以及拼音下的常用的汉字. 3 ...

  6. 【转】怎样将DataGridView中绑定的表的列名改成中文

    在DataGridView设置数据源绑定后,设置DataGridView的属性HeaderText就可以了.代码参考: dataGridView.Columns[filedName].HeaderTe ...

  7. 常见CSS注意问题

    1. 初始化css 有哪些 因 为浏览器的品种很多,每个浏览器的默认样式也是不同的,比如<button>标签,在IE浏览器.Firefox浏览器以及Safari浏览 器中的样式都是不同的, ...

  8. HTML5:基本使用

    单行文本输入框 type为text表示input元素为一个单行文本框,是input元素的默认表现形式.单行文本输入框支持下面的属性设置. A:设定元素大小 maxlength属性设定用户能够输入的字符 ...

  9. php eval函数用法总结

    可以在php.ini禁止此函数,结果失败了 eval定义和用法  eval() 函数把字符串按照 PHP 代码来计算.  该字符串必须是合法的 PHP 代码,且必须以分号结尾.  如果没有在代码字符串 ...

  10. typedef和#define的区别

    转自:http://www.cnblogs.com/kerwinshaw/archive/2009/02/02/1382428.html 一.typedef的用法在C/C++语言中,typedef常用 ...