题意:

给定一个平面图 . 为空地(不着火) # 为草

开始可以选1-2个草堆点燃,每隔一秒会把上下左右的草引燃(开始时间为0秒)

问把所有草烧光的最少时间

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std; const int INF=;
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;} char mp[][];
int v[][];
int R,C;
int dir[][]={,,,-,,,-,}; struct Node{
int x,y;
Node(int x=,int y=):x(x),y(y){}
}t1,t2; int bfs(int a,int b,int c,int d)
{
int i,j,ans=;
for(i=;i<;i++) for(j=;j<;j++) v[i][j]=INF;
queue<Node> Q;
Q.push(Node(a,b));
Q.push(Node(c,d));
v[a][b]=v[c][d]=;
while(!Q.empty())
{
t1=Q.front();Q.pop();
for(i=;i<;i++)
{
t2.x=t1.x+dir[i][];t2.y=t1.y+dir[i][];
if(mp[t2.x][t2.y]=='#' && v[t2.x][t2.y]>v[t1.x][t1.y]+)
{
Q.push(t2);v[t2.x][t2.y]=v[t1.x][t1.y]+;
}
}
}
for(i=;i<=R;i++)
{
for(j=;j<=C;j++)
if(mp[i][j]=='#') ans=max(ans,v[i][j]);
}
return ans;
} int Slove()
{
int Min=INF;
int i,j,k,m;
for(i=;i<=R;i++)
{
for(j=;j<=C;j++)
{
if(mp[i][j]=='#')
{
for(k=i;k<=R;k++)
{
for(m=;m<=C;m++)
if(mp[k][m]=='#')
{
if(i==k && j==m) continue;
Min=min(Min,bfs(i,j,k,m));
}
}
}
}
}
return Min==INF?-:Min;
}
int main()
{
int cnt,t,Icase,i,j;
scanf("%d",&t);
for(Icase=;Icase<=t;Icase++)
{
cnt=;
scanf("%d %d",&R,&C);
for(i=;i<=R;i++)
{
getchar();
for(j=;j<=C;j++)
{
scanf("%c",&mp[i][j]);
if(mp[i][j]=='#') cnt++;
}
}
if(cnt<=) {printf("Case %d: 0\n",Icase);continue;}
for(i=;i<=R;i++) mp[i][]=mp[i][C+]='.';
for(i=;i<=C;i++) mp[][i]=mp[R+][i]='.';
printf("Case %d: %d\n",Icase,Slove());
}
return ;
}

foj 2150 bfs的更多相关文章

  1. foj 2150 Fire Game(bfs暴力)

         Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M ...

  2. FZU - 2150 bfs [kuangbin带你飞]专题一

    题意:两个人玩很变态的游戏,将一个草坪的某两个点点燃,点燃的草坪可以向上下左右四个方向扩散,问能否将整块草坪上面的草都点燃.如果能,输出最短时间(^_^他们就能玩更变态的游戏了),如果不能,输出-1. ...

  3. fzu 2150(bfs)

     Problem 2150 Fire Game Accept: 693    Submit: 2657 Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  4. ACM: FZU 2150 Fire Game - DFS+BFS+枝剪 或者 纯BFS+枝剪

    FZU 2150 Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  5. fzu 2150 Fire Game 【身手BFS】

    称号:fzupid=2150"> 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个 ...

  6. (FZU 2150) Fire Game (bfs)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 Problem Description Fat brother and Maze are playing ...

  7. FZU 2150 fire game (bfs)

    Problem 2150 Fire Game Accept: 2133    Submit: 7494Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  8. Fire Game FZU - 2150 (bfs)

    Problem 2150 Fire Game Accept: 3772    Submit: 12868Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  9. FZU 2150 Fire Game (暴力BFS)

    [题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...

随机推荐

  1. php的字符转换 & php登入注册界面设计以及源码 & 分离公共部分

    我们在编写的时候总是会出现乱码 https://www.cnblogs.com/mafeng/p/5827215.html php登入注册界面设计以及源码 https://blog.csdn.net/ ...

  2. Object-C知识点 (六) 开发中的技巧

    本文主要介绍开发中的一些实用技巧 #pragma mark - 代码控制Home按键 [[UIApplication sharedApplication] performSelector:@selec ...

  3. cocos2d-x中的字符串操作

    1:循环体中字符串的构造.      通常用于多个有规律的文件的名字,诸如:[NSString stringWithFormat:@"filed.png",i].我们可以通过spr ...

  4. bash编程之循环控制:

    bash编程之循环控制: for varName in LIST; do 循环体 done   while CONDITION; do 循环体 done   until CONDITION; do 循 ...

  5. node 文件下载到本地 (支持中文文件名)

    downloadfile:function(req,res,next){ var name= encodeURI(req.query.name); var path= req.query.url; v ...

  6. Re:从零开始的Linux之路(目录配置)

    基于 Red Hat Enterprise Linux 7.5 或者 CentOS 7.4 FHS协议(Filesystem Hierarchy Standard)——文件系统层次化标准 该标准定义了 ...

  7. MySQL中文转换成拼音的函数

    CREATE DEFINER=`root`@`localhost` FUNCTION `fristPinyin`(`P_NAME` VARCHAR(255) CHARSET utf8) RETURNS ...

  8. python-类与继承

    类的继承 什么是继承? 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类.python中,父类.子类(派生类)只有在继承的时候才会产生. 继承的特性:子类会继承父类所有的属性. 为什么要用 ...

  9. BZOJ 2721: [Violet 5]樱花

    (X-N)(Y-N)=N^2 #include<cstdio> using namespace std; const int mod=1e9+7; int n,cnt,isprime[10 ...

  10. SPOJ 1825 Free tour II 树分治

    题意: 给出一颗边带权的数,树上的点有黑色和白色.求一条长度最大且黑色节点不超过k个的最长路径,输出最长的长度. 分析: 说一下题目的坑点: 定义递归函数的前面要加inline,否则会RE.不知道这是 ...