Fire Game--FZU2150(bfs)
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)的更多相关文章
- fzu2150(bfs)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 题意:在任意两处点火,求最短时间烧光所有草堆. 分析:由于n,m比较小,将所有草堆坐标记录下来,然后暴力 ...
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的广度优先搜索遍历(BFS)
图的存储方法:邻接矩阵.邻接表 例如:有一个图如下所示(该图也作为程序的实例): 则上图用邻接矩阵可以表示为: 用邻接表可以表示如下: 邻接矩阵可以很容易的用二维数组表示,下面主要看看怎样构成邻接表: ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 【BZOJ5492】[HNOI2019]校园旅行(bfs)
[HNOI2019]校园旅行(bfs) 题面 洛谷 题解 首先考虑暴力做法怎么做. 把所有可行的二元组全部丢进队列里,每次两个点分别向两侧拓展一个同色点,然后更新可行的情况. 这样子的复杂度是\(O( ...
- 深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS) 广度优先搜索(BFS) 1.介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索.简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次 ...
- 图的 储存 深度优先(DFS)广度优先(BFS)遍历
图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...
- 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)
一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ...
- 层层递进——宽度优先搜索(BFS)
问题引入 我们接着上次“解救小哈”的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLian/p/74296 ...
- HDU.2612 Find a way (BFS)
HDU.2612 Find a way (BFS) 题意分析 圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车.百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个...坤 ...
随机推荐
- Python爬虫学习笔记-1.Urllib库
urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...
- Jsoup(二)-- Jsoup查找DOM元素
一.Jsoup查找DOM元素的方法 getElementById(String id) 根据id 来查询DOM getElementsByTag(String tagName) 根据tag 名称来查询 ...
- ASP.NET MVC入门到精通——数据库仓储
业务层调用数据层对象,我不想每次都new一个数据层对象,而是在数据层创建一个仓储,统一管理所有的对象调用. 1.在IDAL项目中,新建IDBSession.tt模板 Ctrl+S后自动生成IDBS ...
- javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
一: 在app的build中android { ... defaultConfig { ... //添加如下配置就OK了 javaCompileO ...
- window下遍历并修改文件
今天需要写一个遍历文件夹下的所有文件,试了试以前的方法竟然报错了.重新改了一下. #include <iostream> #include <stdlib.h> #includ ...
- 美秒快报 移动端API接口后台制作总结
1.创建方法时,不要用index这类的不易显示该方法功能的单词,尽量使用功能的缩写 例如: public function xssc(){} 2.尽量少用Request方法,多用input助手方法获取 ...
- 《转》Python学习(17)-python函数基础部分
http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...
- 【ORACLE 】 ORA-00031 标记要删去的会话(解决)
在使用Oracle的过程中,会有使用了锁(for update)但又忘记释放锁的情况.这是就需要用到KILL语句了.(如果不知道KILL语句怎么用,可参考: http://www.cnblogs.co ...
- jQuery事件处理(六)
1.通过一步步调试的的方法观察了一下存放到cache中的事件及其处理程序的数据格式: { events : { // 根据事件类型存放添加到该元素上的所有事件,下面以click为例 click : [ ...
- SSL延迟有多大?
http://www.ruanyifeng.com/blog/2014/09/ssl-latency.html 作者: 阮一峰 日期: 2014年9月24日 据说,Netscape公司当年设计SSL协 ...