foj 2150 Fire Game(bfs暴力)
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+ which refers to the grid (x+, y), (x-, y), (x, y+), (x, y-). 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. <= T <=, <= n <=, <= m <=
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 -. See the sample input and output for more details.
Sample Input
.#.
###
.#. .#.
#.#
.#. ...
#.#
... ###
..#
#.#
Sample Output
Case :
Case : -
Case :
Case :
暴力枚举两点,bfs统计,最后求最小值。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<bitset>
#include<map>
#include<vector>
#include<stdlib.h>
#include <stack>
using namespace std;
#define PI acos(-1.0)
#define max(a,b) (a) > (b) ? (a) : (b)
#define min(a,b) (a) < (b) ? (a) : (b)
#define ll long long
#define eps 1e-10
#define MOD 1000000007
#define N 16
#define inf 1<<26
int n,m;
char mp[N][N];
int vis[N][N];
int dirx[]={,,-,};
int diry[]={-,,,};
struct Node{
int x,y;
int t;
}node[N*N]; int bfs(Node a,Node b){
queue<Node>q;
q.push(a);
q.push(b);
vis[a.x][a.y]=;
vis[b.x][b.y]=;
int T=;
while(!q.empty()){
Node tmp=q.front();
q.pop();
Node cnt;
T=max(T,tmp.t);
for(int i=;i<;i++){
cnt.x=tmp.x+dirx[i];
cnt.y=tmp.y+diry[i];
if(cnt.x< || cnt.x>=n || cnt.y< || cnt.y>=m) continue;
if(vis[cnt.x][cnt.y]) continue;
if(mp[cnt.x][cnt.y]=='.') continue;
vis[cnt.x][cnt.y]=;
cnt.t=tmp.t+;
q.push(cnt);
}
}
return T;
} int main()
{
int t,ac=;
scanf("%d",&t);
while(t--){
int num=;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%s",mp[i]);
for(int j=;j<m;j++){
if(mp[i][j]=='#'){
node[num].x=i;
node[num].y=j;
node[num++].t=;
}
}
} printf("Case %d: ",++ac);
if(num<=){
printf("0\n");
continue;
} int ans=inf;
for(int i=;i<num;i++){
for(int j=i;j<num;j++){
int flag=;
memset(vis,,sizeof(vis));
int w=bfs(node[i],node[j]);
//printf("===%d\n",w);
for(int k=;k<n;k++){
for(int l=;l<m;l++){
if(mp[k][l]=='#' && vis[k][l]==){
flag=;
break;
}
}
if(flag==){
break;
}
}
if(flag){
ans=min(ans,w);
}
}
} if(ans!=inf){
printf("%d\n",ans);
}
else{
printf("-1\n");
}
}
return ;
}
foj 2150 Fire Game(bfs暴力)的更多相关文章
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
- (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+dfs)
Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board ...
- FZU - 2150 Fire Game bfs+双起点枚举
题意,10*10的地图,有若干块草地“#”,草地可以点燃,并在一秒后点燃相邻的草地.有墙壁‘·‘阻挡.初始可以从任意两点点火.问烧完最短的时间.若烧不完输出-1. 题解:由于100的数据量,直接暴力. ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzupid=2150"> 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个 ...
- FZU 2150 fire game (bfs)
Problem 2150 Fire Game Accept: 2133 Submit: 7494Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- FZU Problem 2150 Fire Game
Problem 2150 Fire Game Accept: 145 Submit: 542 Time Limit: 1000 mSec Memory Limit : 32768 KB P ...
- FZU 2150 Fire Game(点火游戏)
FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description - 题目描述 ...
- FZOJ Problem 2150 Fire Game
...
随机推荐
- Android网络编程概述
Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...
- 关于JavaScript的namespace命名空间
写C或者JAVA习惯的人写JavaScript时可能会发现JavaScript并没有命名空间这一概念,当然如果没有接触过命名空间的程序猿(比如写js,PHP,Python)也可能对命名空间不关注或者不 ...
- poj 2425 A Chess Game_sg函数
题意:给你一个有向无环图,再给你图上的棋子,每人每次只能移动一个棋子,当轮到你不能移动棋子是就输了,棋子可以同时在一个点 比赛时就差这题没ak,做了几天博弈终于搞懂了. #include <io ...
- 谈谈 WLST Custom Commands
在了解WLST定制命令之前,简单说一下WLST,WLST 全称叫Weblogic Scripting Tool, 它提供了一组预定义命令来方便Weblogic的用户通过命令行对Weblogic 实例, ...
- Oracle 表的常见操作
--创建表并指定表空间 create table goods( id VARCHAR2(20) primary key, name VARCHAR2(20) NOT NULL, price NUMBE ...
- hdu 4393 Throw nails(STL之优先队列)
Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...
- 不借助第三方jar包实现文件上传
假设实现文件上传难道非要借助第三方jar包(最经常使用的莫过于apache的commons-fileupload工具包)来实现吗?答案是否定的.以下通过样例演示在不借助第三方jar包的前提下怎样实现文 ...
- 前端学习——JQuery Ajax使用经验
0.前言 在项目推进过程中常常使用Ajax,通过Jquery提供的函数能够很方便的使用Ajax,可是在实际使用中也遇到一些问题,比如怎样防止浏览器使用缓存,怎样使用同步方式等.通过博文整理总结 ...
- IE下图片切换的时候,图片总是切换不成功---根本问题是IE缓存图片
作为WEB设计者,为了在网页展示上加强用户体验,经常会利用图象载入显示状态方法,这自然需要Image对象的onload事件. 在firefox浏览器下完成开发后,可是在IE浏览器中进行调试总不能被调用 ...
- js获取网页高度和宽度(备份)
网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...