[swustoj 191] 迷宫逃离
迷宫逃离(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] 迷宫逃离的更多相关文章
- [Swust OJ 191]--迷宫逃离(打表搜索)
题目链接:http://acm.swust.edu.cn/problem/191/ Time limit(ms): 1000 Memory limit(kb): 65535 江鸟突然想到了一个 ...
- [Swust OJ 1023]--Escape(带点其他状态的BFS)
解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535 Descript ...
- hdu 1728:逃离迷宫(DFS,剪枝)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 1728:逃离迷宫(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有 ...
- hdoj 1728 逃离迷宫
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 逃离迷宫(HDU 1728 BFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 4524 郑厂长系列故事——逃离迷宫 小水题
郑厂长系列故事——逃离迷宫 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- HDU 1728 逃离迷宫(DFS||BFS)
逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
- hdu 1728 逃离迷宫 (BFS)
逃离迷宫 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
随机推荐
- IO流05_OutputStream和Writer输出流
[输出流中的字节流和字符流] [OutPutStream和Writer] [ OutputStream和Writer中包含的方法 ] void write(int c) 将指定的字节/字符 ...
- 15_CXF和Spring开发手机号查询网站
[整体分析] [生成客户端代码] wsdl网址: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx 生成的客户端代码 [工程截图(已拷入客户端 ...
- Flexbox完整指南- A Complete Guide to Flexbox
背景 Flexbox 布局 (FLexible Box)模块(现在处于W3C的最终征求意见稿(Last Call Working Draft)阶段)意在提供一个更为有效的方式来进行布局.对齐和分配一个 ...
- 鸟哥笔记:syslogd:记录日志文件的服务
日志文件内容的一般格式 一般来说,系统产生的信息经过syslogd记录下来的数据中,每条信息均记录下面的几个重要数据: 事件发生的日期与时间: 发生此事的主机名: 启动此事件的服务名称(如 samba ...
- javascript之变量、作用域、作用域链
一.变量 javascript的变量是松散类型的,所谓松散类型就是说定义的变量可以用来保存任何类型的数据.定义变量时要使用var操作符后面跟变量名.这里的var是一个关键字,如果定义变量时省略了var ...
- 一个页面,多个flash(刚学jq插件)
只贴js那部分哦 调用 // flash轮播图 var sumF=$('.btnTabs span').length/4; //有四个flash var flashT01=new flash($('. ...
- Java遍历所有网卡打印对应IP
import java.util.Enumeration; import java.net.*; public class Test { /** * @param args */ public sta ...
- mysql 查看数据库大小
select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') as data_size,concat(trunca ...
- java 调用oracle 分页存储过程 返回游标数据集
1.分页类 package org.zh.basic; /** * 页面类 * * @author keven * */ public class PageInfo { // 定义 private S ...
- Silverlight之我见
好长时间没搞Silverlight方面的开发了,原本都以为自己早已忘记,然而前阵子(确切一点说,是挺长时间以前了)的时候,发布Windows10的时候,微软宣布新的浏览器将重新开发,关键是后半句引起了 ...