fzu 2150(bfs)
Accept: 693 Submit: 2657 Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and then they start to fire all the grass. Firstly they choose two grids which are consisting of grass and set fire. As we all know, the fire can spread among the grass. If the grid (x, y) is firing at time t, the grid which is adjacent to this grid will fire at time t+1 which refers to the grid (x+1, y), (x-1, y), (x, y+1), (x, y-1). This process ends when no new grid get fire. If then all the grid which are consisting of grass is get fired, Fat brother and Maze will stand in the middle of the grid and playing a MORE special (hentai) game. (Maybe it’s the OOXX game which decrypted in the last problem, who knows.)
You can assume that the grass in the board would never burn out and the empty grid would never get fire.
Note that the two grids they choose can be the same.
Input
The first line of the date is an integer T, which is the number of the text cases.
Then T cases follow, each case contains two integers N and M indicate the size of the board. Then goes N line, each line with M character shows the board. “#” Indicates the grass. You can assume that there is at least one grid which is consisting of grass in the board.
1 <= T <=100, 1 <= n <=10, 1 <= m <=10
Output
For each case, output the case number first, if they can play the MORE special (hentai) game (fire all the grass), output the minimal time they need to wait after they set fire, otherwise just output -1. See the sample input and output for more details.
Sample Input
Sample Output
题目描述:
给定一张图。图中"#"代表草,'.'代表地,可能有几个草地,给你两把火,问烧完整个图中的草的最短时间。
由于n<=10,所以设立一个结构体,里面的属性有位置,和被烧的时间,然后枚举两把火的位置,开始烧,
用cnt计数烧过的草,然后将枚举的两个位置放进队列,如果两个位置重合的话。cnt=1,否则cnt=2;
其实我们可以认为i这两把火是有一把火烧起来的,那么之后就跟裸的宽搜是一样的,(其实跟锁屏样式的两种判断转换成一种差不多)time,每层+1.#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <cstring>
#define inf 0x3f3f3f3f
using namespace std; char MAP[][];
int visit[][];
int dir[][]={-,,,,,,,-};
int n,m,sum,cnt;
struct node
{
int x, y,Time;
}; int main()
{
int t;
scanf("%d",&t);
int _case=;
while(t--)
{
queue< node > Q;
sum=;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
{
getchar();
for(int j=;j<m;j++)
{ scanf("%c",&MAP[i][j]);
if(MAP[i][j]=='#')
{
++sum;
}
}
}
int answer=inf;
int cntll=;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
if(MAP[i][j] == '#')
{
for(int xx=i;xx<n;xx++)
for(int yy=;yy<m;yy++)
{
if(xx==i && yy<j)
continue;
memset(visit,,sizeof(visit));
if(MAP[xx][yy]=='#')
{
cnt=;
if(i==xx && j==yy)
{
cnt=;
}
visit[i][j]=; visit[xx][yy]=;
node NODE1,NODE2,NODE;
NODE1.x=i; NODE1.y=j;NODE1.Time=;
NODE2.x=xx; NODE2.y=yy;NODE2.Time=;
Q.push(NODE1);
Q.push(NODE2);
while(!Q.empty())
{ NODE=Q.front();
Q.pop();
node point;
for(int k=;k<;k++)
{
point.x=NODE.x+dir[k][];
point.y=NODE.y+dir[k][];
if(point.x>= && point.x<n && point.y>= && point.y<m)
if(visit[point.x][point.y]== && MAP[point.x][point.y]=='#')
{
visit[point.x][point.y]=;
point.Time=NODE.Time+;
Q.push(point);
cnt=cnt+;
}
}
} if(cnt==sum)
{
answer=min(answer,NODE.Time);
}
}
}
}
}
if(answer!=inf)
printf("Case %d: %d\n",++_case,answer);
else
printf("Case %d: -1\n",++_case); } return ;
}
fzu 2150(bfs)的更多相关文章
- FZU - 2150 bfs [kuangbin带你飞]专题一
题意:两个人玩很变态的游戏,将一个草坪的某两个点点燃,点燃的草坪可以向上下左右四个方向扩散,问能否将整块草坪上面的草都点燃.如果能,输出最短时间(^_^他们就能玩更变态的游戏了),如果不能,输出-1. ...
- ACM: FZU 2150 Fire Game - DFS+BFS+枝剪 或者 纯BFS+枝剪
FZU 2150 Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
- FZU 2150 Fire Game
Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- FZU 2150 Fire Game(点火游戏)
FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description - 题目描述 ...
- (广搜)Fire Game -- FZU -- 2150
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/I Fire Game Time Limit:1000MS ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzupid=2150"> 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个 ...
- (FZU 2150) Fire Game (bfs)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 Problem Description Fat brother and Maze are playing ...
- FZU 2150 fire game (bfs)
Problem 2150 Fire Game Accept: 2133 Submit: 7494Time Limit: 1000 mSec Memory Limit : 32768 KB ...
随机推荐
- E题
题目大意: 找到一个最小的l值,使得a到b-l+1中任取一个数开始前进l次,中间包含至少有k个素数,如果找不到,返回-1: 运用素数打表法和2分法便能简单搞定: 题目链接:http://codefor ...
- [POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)
传送门 引子: 有一个问题,是对于一个图上的所有点,用不相交的路径把他们覆盖,使得每个点有且仅属于一条路径,且这个路径数量尽量小. 对于这个问题可以把直接有边相连的两点 x —> y,建一个二分 ...
- bzoj 1701 [Usaco2007 Jan]Cow School牛学校
[Usaco2007 Jan]Cow School牛学校 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 175 Solved: 83[Submit][S ...
- docker镜像没有ifconfig、ping指令
Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools # ifconfig apt ...
- mappedBy的作用
mappedBy的意思就是"被映射",即mappedBy这方不用管关联关系,关联关系交给另一方处理 1.规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外 ...
- 每日一个linux命令(1)
ls命令: 1. ls -l -R /home/文件夹 列出/home/文件夹下所有文件和目录的详细资料 2. ls -l t* ...
- 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题
背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...
- json解析bug之ERROR ExceptionController:185 - not close json text, token : :
错误:ERROR ExceptionController:185 - not close json text, token : : 原因:json数据格式有误.!我的错误是,缺少了一个包括json数据 ...
- Jmeter参数Parameters和Body Data区别
1.如图: 2.有文章说,Parameters是get的参数:Body Data是post的参数:get的参数存在于url中,post的参数存在于body中: 但是我使用jmeter3.3版本测试 ...
- 蚂蜂窝VS穷游最世界-自由行类App分析
很多其它内容请关注博客: http://www.china10s.com/blog/? p=150 一.产品概述 体验环境: 机型:iPhone 6 型号:64G版 系统:iOS9.2 蚂蜂窝APP版 ...