FZU - 2150-Fire Game BFS-枚举
题意:
两个小朋友可以任选一块草地点火,草地可以不同,也可以相同,问最少的烧光草地的时间。
思路:
一开始看到这个以为是联通块计数,没想到这道题通过枚举两个起始点作为队列的初始点,每次跑一边bfs即可。
- #include <algorithm>
- #include <iterator>
- #include <iostream>
- #include <cstring>
- #include <cstdlib>
- #include <iomanip>
- #include <bitset>
- #include <cctype>
- #include <cstdio>
- #include <string>
- #include <vector>
- #include <cmath>
- #include <queue>
- #include <list>
- #include <map>
- #include <set>
- using namespace std;
- //#pragma GCC optimize(3)
- //#pragma comment(linker, "/STACK:102400000,102400000") //c++
- #define lson (l , mid , rt << 1)
- #define rson (mid + 1 , r , rt << 1 | 1)
- #define debug(x) cerr << #x << " = " << x << "\n";
- #define pb push_back
- #define pq priority_queue
- typedef long long ll;
- typedef unsigned long long ull;
- typedef pair<ll ,ll > pll;
- typedef pair<int ,int > pii;
- typedef pair<int,pii> p3;
- //priority_queue<int> q;//这是一个大根堆q
- //priority_queue<int,vector<int>,greater<int> >q;//这是一个小根堆q
- #define fi first
- #define se second
- //#define endl '\n'
- #define OKC ios::sync_with_stdio(false);cin.tie(0)
- #define FT(A,B,C) for(int A=B;A <= C;++A) //用来压行
- #define REP(i , j , k) for(int i = j ; i < k ; ++i)
- //priority_queue<int ,vector<int>, greater<int> >que;
- const ll mos = 0x7FFFFFFFLL; //
- const ll nmos = 0x80000000LL; //-2147483648
- const int inf = 0x3f3f3f3f;
- const ll inff = 0x3f3f3f3f3f3f3f3fLL; //
- const int mod = 1e9+;
- const double PI=acos(-1.0);
- // #define _DEBUG; //*//
- #ifdef _DEBUG
- freopen("input", "r", stdin);
- // freopen("output.txt", "w", stdout);
- #endif
- /*-----------------------showtime----------------------*/
- const int maxn = ;
- int n,m;
- string mp[maxn];
- int dp[maxn][maxn];
- int nt[][] = {
- {,},{,},{-,},{,-},
- };
- struct node
- {
- int x,y,step;
- }q[maxn*maxn];
- int mx,tot;
- void bfs(node a,node b){
- mx = ;
- for(int i=; i<maxn; i++){
- for(int j=; j<maxn; j++)dp[i][j] = inf;
- }
- queue<node>que;
- que.push(a);
- if(a.x!=b.x||a.y!=b.y)que.push(b);
- dp[a.x][a.y] = ;
- dp[b.x][b.y] = ;
- while(!que.empty()){
- int x = que.front().x,y = que.front().y,s = que.front().step;
- que.pop();
- for(int i= ; i<; i++){
- int nx = x + nt[i][],ny = y + nt[i][];
- if(nx < ||nx >=n || ny <||ny>=m)continue;
- if(mp[nx][ny]=='.')continue;
- if(dp[nx][ny] > s + ){
- dp[nx][ny] = s + ;
- mx = max(mx,s+);
- node tmp={nx,ny,s+};
- que.push(tmp);
- }
- }
- }
- }
- void solve(){
- cin>>n>>m;
- for(int i=; i<n; i++){
- cin>>mp[i];
- }
- int cnt = ,ans = inf;
- for(int i=; i<n ; i++){
- for(int j=; j<m; j++){
- if(mp[i][j]=='#'){
- q[++cnt].x = i;
- q[cnt].y = j;
- q[cnt].step = ;
- }
- }
- }
- for(int i=; i<=cnt; i++)
- {
- for(int j=i; j<=cnt; j++){
- bfs(q[i],q[j]);
- int flag = ;
- for(int x = ; x < n; x++){
- for(int y = ; y<m; y++){
- if(dp[x][y] >=inf && mp[x][y] == '#')flag= ;
- }
- }
- if(flag)ans = min(ans, mx);
- }
- }
- if(ans < inf)cout<<ans<<endl;
- else cout<<-<<endl;
- }
- int main(){
- int T; cin>>T;
- for(int t=;t<=T;t++){
- cout<<"Case "<<t<<": ";
- solve();
- }
- return ;
- }
FZU-2150
FZU - 2150-Fire Game BFS-枚举的更多相关文章
- FZU - 2150 Fire Game bfs+双起点枚举
题意,10*10的地图,有若干块草地“#”,草地可以点燃,并在一秒后点燃相邻的草地.有墙壁‘·‘阻挡.初始可以从任意两点点火.问烧完最短的时间.若烧不完输出-1. 题解:由于100的数据量,直接暴力. ...
- (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+dfs)
Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N*M board ...
- FZU 2150 Fire Game(点火游戏)
FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description - 题目描述 ...
- fzu 2150 Fire Game 【身手BFS】
称号:fzupid=2150"> 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个 ...
- FZU 2150 Fire Game (暴力BFS)
[题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...
- FZU 2150 fire game (bfs)
Problem 2150 Fire Game Accept: 2133 Submit: 7494Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- FZU 2150 Fire Game
Fire Game Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- FZU 2150 Fire Game 【两点BFS】
Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns) ...
- FZU 2150 Fire Game(BFS)
点我看题目 题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的.问你最少花多少时间 ...
随机推荐
- Java 之MVC动态分页完美实现
一个分页小技术有时也是让人挠头,在这里完全前端实现方式与Java的实现方式,我们提供给你完全的编码参考,希望能够帮到你哦(:) 内容导读 1.程序结构 2.JSP页面设计 3.分页主要编码 4.运行效 ...
- 放出一批学生管理系统jsp源码,部分有框架
基于jsp+struts 2的学生管理系统eclipse - 源码码头 https://www.icodedock.com/article/25.html 基于jsp+mysql的JSP学生成绩管 ...
- LR有的JMeter也有之二“检查点”
好吧!接着上一篇文章的内容和思路,继续前进. 检查点:简单的来理解一下,上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用test.dat里面的文件呢.当然,我们可以 ...
- Spring Cloud 之 Stream.
一.简介 Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架. Spring Cloud Stream 为一些供应商的消息中间件产品(目前集成了 RabbitMQ 和 ...
- NLP(十四)自制序列标注平台
背景介绍 在平时的NLP任务中,我们经常用到命名实体识别(NER),常用的识别实体类型为人名.地名.组织机构名,但是我们往往也会有识别其它实体的需求,比如时间.品牌名等.在利用算法做实体识别的时候 ...
- 洛谷 P2024 [NOI2001]食物链
题意简述 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 1."1 X Y",表示 X 和 Y 是同类. 2."2 X Y",表示 X 吃 Y . ...
- python骚操作---Print函数用法
---恢复内容开始--- python骚操作---Print函数用法 在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 3.x 中是个内置函数,并且拥有更丰富的功能. 参数 ...
- Spring boot中的 JsonConverter
上图是spring-web包的部分目录 为了找出调用了哪种类型的Convert 我找到父类 HttpMessageConverter 查看了它的引用 在spring-boot-autoconfigur ...
- 关于阿里云Mysql分页查询不走索引的问题
需要修改阿里云中的MYSQL 配置参数 : eq_range_index_dive_limit 阿里云上默认是 10 , 这个参数 表示 in 查询 条件超过 10 个 就不走索引,走全表扫描.如果我 ...
- div css float布局用法
float的应用与用法 想要知道float的用法,首先你要知道float在网页中的用处. 浮动的目的就是为了使得设置的对象脱离标准文档流. 什么是标准文档流? 网页在解析的时候,遵循于从上向下,从左向 ...