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~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
随机推荐
- 01_10_SERVLET如何连接Mysql数据库
01_10_SERVLET如何连接Mysql数据库 1. 实现类 public void doGet(HttpServletRequest request, HttpServletResponse r ...
- java第八次作业:课堂上发布的前5张图片(包括匿名对象、单例模式恶汉式、自动生成对象、args[]数组使用、静态关键字)
- 【转】VS2010下MFC的串口编程
串口通信简介 一般来说,计算机都有一个或多个串行端口,这些串口提供了外部设备与PC进行数据传输和通信的通道,在CPU和外设之间充当解释器的角色.当字符数据从CPU发送给外设时,这些字符数据将被转换成串 ...
- PHP计算两个日期相差的年月日时分秒
$start_time = '2017-09-06 15:12:20'; $end_time = '2018-09-08 10:20:45'; get_time($start_time,$end_ti ...
- vue 项目白屏解决方案
在做的项目是使用 vue-cli 脚手架为基础的,只能使用微信浏览器打开的.在某次更新功能代码后,被反馈在一些手机上会出现白屏.经过一番探索,多管齐下解决了问题 白屏可能的原因: es6 代码没有被编 ...
- Linux中让alias设置永久生效的方法详解
Linux中让alias设置永久生效的方法详解 一.问题描述 1.有很多时候我们想要将很多操作作为一个步骤,那么在不作为系统的服务的情况下,别名是我们最好的选择,但是发现别名只能在一次会话中生效,重启 ...
- Python9-进程理论-day35
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:Tim'''进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源 ...
- 安装ubuntu16.4后
美化及配置: http://www.fant0m.com/18.html 安装pip: $ wget https://bootstrap.pypa.io/get-pip.py $ python get ...
- LeetCode(279)Perfect Squares
题目 Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9 ...
- eclipse使用技巧的网站收集——转载(一)
Eclipse工具使用技巧总结(转载) 首先推荐一篇非常好的How to use eclipse文章 ,讲的是eclipse使用的方方面面,非常实用,推荐给大家! 一.常用快捷键:Ctrl+F11 运 ...