http://acm.fzu.edu.cn/problem.php?pid=2150

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=65959#problem/I

题意: 从两个任意点点着草地 火会向上下左右四个方向蔓延

相邻的草地就会被点着

问最短多长时间点燃所有草地

思路:其实就是枚举两个点同时进队列进行bfs

其中要注意 草地小于等于二时 要特殊处理

#include<iostream>
#include<stdio.h>
#include<string.h>
#define INF 0xfffffff
#include<queue>
#include<algorithm>
using namespace std;
#define N 15 int vis[N][N],n,m,counts,mark[N][N][N][N],Mark,sum;
int dir[][]={ {,},{-,},{,-},{,} };
char maps[N][N]; struct node
{
int x,y,step;
}; void bfs(node s1,node s2)
{
queue<node>Q;
node p,q;
s1.step=s2.step=;
sum=;
memset(vis,,sizeof(vis));
Q.push(s1);
Q.push(s2);
vis[s1.x][s1.y]=vis[s2.x][s2.y]=;
while(!Q.empty())
{
q=Q.front();
Q.pop();
for(int i=;i<;i++)
{
p.x=q.x+dir[i][];
p.y=q.y+dir[i][];
if(p.x<n&&p.x>=&&p.y>=&&p.y<m&&vis[p.x][p.y]==&&maps[p.x][p.y]=='#')
{
p.step=q.step+;
vis[p.x][p.y]=;
Q.push(p);
Mark++;// 已经燃烧的地方个数;
}
}
sum=max(sum,q.step);
}
} int main()
{
int T,i,j,ans,t=;
node s1,s2;
scanf("%d",&T);
while(T--)
{
t++;
memset(mark,,sizeof(mark));
scanf("%d%d",&n,&m);
counts=sum=;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
cin>>maps[i][j];
if(maps[i][j]=='#')
counts++;
}
}
printf("Case %d: ",t);
if(counts<=)//如果只有两块一下的草地,为0;
{
printf("0\n");continue;
}
ans=INF;
for(i=;i<n;i++)
{
for(j=;j<m;j++)
{
if(maps[i][j]=='#')//第一个点为‘#’;
{
for(int ii=;ii<n;ii++)
{
for(int jj=;jj<m;jj++)
{
if(maps[ii][jj]=='#'&&(ii!=i||jj!=j)&&mark[i][j][ii][jj]==)//要满足两点不同并且没有被同时当做起点;
{
mark[ii][jj][i][j]=mark[i][j][ii][jj]=;//标记说明这两个点被当过起点;
s1.x=i,s1.y=j;
s2.x=ii,s2.y=jj;
s1.step=s2.step=;
Mark=;//刚开始的两个起点被烧过了;
bfs(s1,s2);
if(ans>sum&&Mark==counts/*看是否把所有草地都燃烧完了;*/)
ans=sum;
}
}
}
}
}
}
if(ans==INF)
printf("-1\n");
else
printf("%d\n",ans);
}
return ;
}

Fire Game--FZU2150(bfs)的更多相关文章

  1. fzu2150(bfs)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 题意:在任意两处点火,求最短时间烧光所有草堆. 分析:由于n,m比较小,将所有草堆坐标记录下来,然后暴力 ...

  2. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  3. 【算法导论】图的广度优先搜索遍历(BFS)

    图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...

  4. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

  5. 【BZOJ5492】[HNOI2019]校园旅行(bfs)

    [HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...

  6. 深度优先搜索(DFS)和广度优先搜索(BFS)

    深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...

  7. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

  8. 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)

    一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...

  9. 层层递进——宽度优先搜索(BFS)

    问题引入 我们接着上次“解救小哈”的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLian/p/74296 ...

  10. HDU.2612 Find a way (BFS)

    HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...

随机推荐

  1. Linux init 命令

    init命令用于切换到指定的运行级别,用法如下: [root@localhost ~]# init //关机 [root@localhost ~]# init //切换到单用户模式/救援模式 [roo ...

  2. MQTT-C-PUB

    /* ============================================================================ Name        : mqtest ...

  3. HttpClient详细解释

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  4. 【.NetCore学习】ASP.NET Core EF Core2.0 DB First现有数据库自动生成实体Context

    主要参考微软官方文档 https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db Microsoft .NE ...

  5. 【linux】nginx options 跨域问题 请求HTTP错误405 用于访问该页的HTTP动作未被许可 Method Not Allowed

    JavaScript JS 跨域问题 HTTP 错误 405 - 用于访问该页的 HTTP 动作未被许可HTTP 错误 405.0 - Method Not Allowed Nginx 处理跨域问题. ...

  6. Karma和Jasmine自动化单元测试

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  7. jQuery("dom").get()的源码分析

    该方法是绑定在jQuery.prototype上的一个静态方法,目的是取出jQuery对象中的某个或全部DOM元素. 使用方法: $("someDOM").get(index); ...

  8. requests源码分析

    0.前言 (1) 拆部分reques中感兴趣t的轮子 (2)对一些感兴趣的pythonic写法做一些归纳 1.用object.__setattr__来初始化构造函数 反正我之前就是直接实例对象时把所有 ...

  9. Java环境变量配置错误

    1,由于Java的环境变量配置错误,导致用到Java的编译过程中出现错误: 改正办法: wget http://download.oracle.com/otn-pub/java/jdk/8u181-b ...

  10. Mac OS 安装phpMyAdmin

    http://www.coolestguyplanettech.com/installing-phpmyadmin-on-mac-osx-10-7-lion/