FZU 2150
题目大意:有一个矩阵,"."表示石头,"#",表示小草,有两个人,可以在任意两个位置点燃小草,小草可以上下左右蔓延,蔓延一次的时间为1,问所有蔓延完所有小草所花费的最短时间。如果不可能蔓延完所有的小草,输出-1。
题解:暴力枚举两个点的位置,然后以这两个点为起点,将这两个点放入队列中,跑bfs。(属于多起点bfs问题)
code:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue> using namespace std;
const int INF=1e9+;
const int N = ;
char mp[N][N];
struct stu {
int x, y, time;
};
int n, m;
int sum=INF;
int d[][]={,,,,,-,-,};
bool mark[N][N];
queue<stu> que;
int bfs(){
int ans=;
while(que.size()){
stu x1=que.front();
que.pop();
ans=max(ans,x1.time);
for(int i=;i<;i++){
int dx=x1.x+d[i][];
int dy=x1.y+d[i][];
if(dx<||dy<||dx>n||dy>m||mp[dx][dy]=='.'||mark[dx][dy]) continue ;
stu c;
c.x=dx;c.y=dy;c.time=+x1.time;que.push(c);
mark[dx][dy]=;
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(mp[i][j]=='#'&&mark[i][j]==) return INF;
}
}
return ans;
} void solve(int time){
sum=INF;
bool flag=;
cin >> n >> m;
for (int i = ; i <= n; i++) scanf("%s", mp[i] + );
for (int i = ; i <= n; i++) {
for (int j = ; j <= m; j++) {
for (int k = ; k <= n; k++) {
for (int k1 = ; k1 <= m; k1++) {
if(i==k&&j==k1) continue ;
if (mp[i][j] == '.' || mp[k][k1] == '.')continue;
else {
flag=;
memset(mark, , sizeof mark);
stu c;
c.x=i;c.y=j;c.time=;que.push(c);
c.x=k;c.y=k1;c.time=;que.push(c);
mark[i][j]=;mark[k][k1]=;
sum=min(bfs(),sum);
}
}
}
}
}
if(!flag) sum=;
printf("Case %d: %d\n",time,sum==INF? -:sum);
}
int main(){
int t; cin >> t;
for(int i=;i<=t;i++) solve(i);
return ;
}
FZU 2150的更多相关文章
- FZU 2150 Fire Game
Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- 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(点火游戏)
FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description - 题目描述 ...
- (广搜)Fire Game -- FZU -- 2150
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/I Fire Game Time Limit:1000MS ...
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
- 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 广度优先搜索,暴力 难度:0
http://acm.fzu.edu.cn/problem.php?pid=2150 注意这道题可以任选两个点作为起点,但是时间仍足以穷举两个点的所有可能 #include <cstdio> ...
- 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 ...
随机推荐
- HDFS数据加密空间--Encryption zone
前言 之前写了许多关于数据迁移的文章,也衍生的介绍了很多HDFS中相关的工具和特性,比如DistCp,ViewFileSystem等等.但是今天本文所要讲的主题转移到了另外一个领域数据安全.数据安全一 ...
- PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数
PAT 乙级 1007. 素数对猜想 (20) c++ 筛选法求素数 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ...
- Oracle中rownum的用法总结
日期:2019/5/22 内容:oracle:数据库:rownum 数据库查询中,常用到"选取前X个"这样的问题,Oracle没有TOP关键字,这类问题都是通过rownum ...
- Numpy和OpenCV中的图像几何变换
介绍 上面的图像使它不言而喻什么是几何变换.它是一种应用广泛的图像处理技术.例如,在计算机图形学中有一个简单的用例,用于在较小或较大的屏幕上显示图形内容时简单地重新缩放图形内容. 它也可以应用于扭曲一 ...
- Sublimeの虚拟环境(Venv)设置
这里主要介绍,在使用 Python 虚拟环境(Venv)时,SublimeText 该怎么设置 为什么使用虚拟环境(Venv) 因为,我有洁癖! 我就是喜欢看到,pip list 命令下什么 Pack ...
- iOS提审笔记
查看苹果各大系统的服务状态:中国区服务:https://www.apple.com/cn/support/systemstatus/美国区服务:https://developer.apple.com/ ...
- SpringBoot登录判断
<!-- html登录代码 --> <div class="box"> <div class="title">登录</ ...
- Modbus协议和应用开发介绍
因业务需要了解Modbus协议的使用,因此对Modbus的协议,以及相应的C#处理应用进行了解,针对协议的几种方式(RTU.ASCII.TCPIP)进行了封装,以及对Modbus的各种功能码的特点进行 ...
- jenkins集成sonarQube实现代码质量检查
1.sonarQube的简介 SonarQube是一款自动化代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与你现有的工作流集成,以支持跨项目分支和拉取请求的连续代码检查. 其工作流程如下: ...
- SSM项目依赖,spring5.1.9
SSM项目依赖,spring5.1.9 简单的SSM项目,未加AOP等等操作 Spring三包bean core content Mybatis 五个mybatis mybatis-spring jd ...