foj 2150 bfs
题意:
给定一个平面图 . 为空地(不着火) # 为草
开始可以选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的更多相关文章
- foj 2150 Fire Game(bfs暴力)
Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M ...
- FZU - 2150 bfs [kuangbin带你飞]专题一
题意:两个人玩很变态的游戏,将一个草坪的某两个点点燃,点燃的草坪可以向上下左右四个方向扩散,问能否将整块草坪上面的草都点燃.如果能,输出最短时间(^_^他们就能玩更变态的游戏了),如果不能,输出-1. ...
- fzu 2150(bfs)
Problem 2150 Fire Game Accept: 693 Submit: 2657 Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- ACM: FZU 2150 Fire Game - DFS+BFS+枝剪 或者 纯BFS+枝剪
FZU 2150 Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzupid=2150"> 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个 ...
- (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)
Problem 2150 Fire Game Accept: 2133 Submit: 7494Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- Fire Game FZU - 2150 (bfs)
Problem 2150 Fire Game Accept: 3772 Submit: 12868Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
随机推荐
- equals和HashCode的羁绊
equals和hashcode我一直没弄明白到底怎么回事,今天终于弄懂了. 如下图: 在Person类没有重写equals和hashcode方法时,是如下情况: 但是当我重写了equals方法时,是如 ...
- jquerymobi总结
http://app-framework-software.intel.com/ http://app-framework-software.intel.com/api2/#$_proxy
- 使用struts2实现文件上传与下载功能
这个问题做了两天,在网上找了很多例子,但是还有一些功能没有实现,暂时先把代码贴出来,以后在做这方面的功能时在修改 文件上传: 一开始我在网上找到基于servlet+jsp环境写的文件上传,但是在将页面 ...
- Bootstrap历练实例:交替的进度条
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 01_10_SERVLET如何连接Mysql数据库
01_10_SERVLET如何连接Mysql数据库 1. 实现类 public void doGet(HttpServletRequest request, HttpServletResponse r ...
- Linux运维笔记--第二部
第2部-重要目录结构详解 1.回顾Linux目录结构知识 /dev/ 设备目录 /etc/ 系统配置及服务配置文件,启动命令的目录 /proc ...
- c++ 创建路径方法
linux.unix平台 #include "stdio.h" #include "stdlib.h" #include <sys/types.h> ...
- lua 使用递归查找键值
function cc.exports.findValueByTbl(tbl,key)--递归方法,用于查找tbl中对应的键值 for k,v in pairs(tbl) do if k == key ...
- CF-1114 (2019/02/11)
CF-1114 A. Got Any Grapes? skip B. Yet Another Array Partitioning Task 将n个数分成连续的k组,使得每组的前m大的数字的总和最大. ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph(有源上下界最大流 模板)
关于有源上下界最大流: https://blog.csdn.net/regina8023/article/details/45815023 #include<cstdio> #includ ...