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
...
随机推荐
- SSAS维度设计中CustomRollupColumn的用法-自定义聚合方式
CustomRollupColumn说明:指定包含多维表达式的列,该表达式可用于聚合特性的度量值.这个属性覆盖给定度量值的AggregateFunction的属性. 解释:通常我们的度量值 ...
- SAR数据下载网站
1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.144.2153&rep=rep1&type=pdf[2] ht ...
- logcat错误日志
http://www.crifan.com/android_log_to_file/ http://www.iteye.com/problems/85431 http://www.cnblogs.co ...
- 【D3.V3.js系列教程】--(十五)SVG基本图形绘制
[D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...
- JAVA反射学习网摘
程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动 ...
- Nutch环境搭建
1. 环境准备 HOST:Ubuntu12.04LTS JDK: jdk-7u45-linux-i586.rpm Nutch:apache-nutch-1.7-bin.tar.gz Solr:solr ...
- hdu 4686 Arc of Dream(矩阵快速幂乘法)
Problem Description An Arc of Dream is a curve defined by following function: where a0 = A0 ai = ai- ...
- Android Studio Build选项的功能
再开发过程中出现了如下错误: 无论如何clean,或者删除项目中build文件夹,Rebuild Project还是报错. 解决方案:Make Project 后出现有代码报错.修复代码问题,运行项目 ...
- Altium designer使用技巧集(1)
1.如何生成PCB 先得新建个PCB文件(File-New-Pcb):然后保存下,在新建的PCB文件下:Design-Import Changes From PCB_PROJECT1.PRJPCB(D ...
- edit distance leetcode
这样的字符转换的dp挺经典的, 若word1[i+1]==word2[j+1] dp[i+1][j+1] = dp[i][j]:否则,dp[i+1][j+1] = dp[i][j] + 1.(替换原则 ...