称号:fzu

pid=2150"> 2150 Fire Game

:给出一个m*n的图,‘#’表示草坪,‘ . ’表示空地,然后能够选择在随意的两个草坪格子点火。火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部的草坪花费时间最小?

分析:这个题目假设考虑技巧的话有点难度,可是鉴于数据范围比較小,我们能够暴力枚举随意的草坪所在的点,然后两个点压进队列里面BFS。去一个满足条件的最小值就可以。

顺便说一下 fzu 2141 Sub-Bipartite Graph 的思路,比赛的时候没有做出来。

这个题目想的复杂了,完了之后发现别人用贪心二分染色。每一个点贪心选择与它相连点的颜色较多的相反的颜色,这样就能够了。看来当时真是想复杂了。

AC代码:

#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;
typedef long long LL;
const int N = 15;
int dx[5] = {0,0,1,-1};
int dy[5] = {1,-1,0,0};
struct Node
{
int x,y;
int cnt ;
};
vector<Node> v;
char mp[N][N];
int vis[N][N];
int n,m;
int BFS(Node a,Node b)
{
memset(vis,0,sizeof(vis));
queue<Node> q;
vis[a.x][a.y] = vis[b.x][b.y] = 1;
a.cnt = 0,b.cnt = 0;
q.push(a),q.push(b);
int ans = 0x3f3f3f3f;
int cas = 1;
while(!q.empty())
{
a = q.front();
q.pop();
//printf("%d %d %d\n",a.x,a.y,a.cnt);
ans = a.cnt;
for(int i = 0;i<4;i++)
{
b.x = a.x + dx[i];
b.y = a.y + dy[i];
b.cnt = a.cnt + 1;
//printf("B:%d %d %d\n",b.x,b.y,b.cnt);
if(b.x>0 && b.y>0 && b.x<=n && b.y<=m && vis[b.x][b.y]==0 && mp[b.x][b.y]=='#')
{
vis[b.x][b.y] = 1;
q.push(b);
}
}
}
return ans;
}
void print()
{
for(int i=1;i<=n;i++)
{
for(int j = 1;j<=m;j++)
{
printf("%c ",mp[i][j]);
}
puts("");
}
}
int main()
{
//freopen("Input.txt","r",stdin);
int T;
scanf("%d",&T);
for(int cas=1;cas<=T;cas++)
{
v.clear();
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
getchar();
for(int j=1;j<=m;j++){
scanf("%c",&mp[i][j]);
if(mp[i][j]=='#')
v.push_back((Node){i,j,0});
}
}
int ans = 0x3f3f3f3f;
for(int i=0;i<v.size();i++)
{
for(int j=i;j<v.size();j++)
{
int tmp = BFS(v[i],v[j]);
bool ok = true;
for(int k = 1;k<=n;k++)
{
for(int f = 1;f<=m;f++)
{
if(vis[k][f] == 0 && mp[k][f]=='#')
{
ok = false;
break;
}
}
if(ok==false)
break;
}
if(ok)
{
ans = min(ans,tmp);
}
}
}
printf("Case %d: ",cas);
if(ans == 0x3f3f3f3f)
puts("-1");
else
printf("%d\n",ans);
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

fzu 2150 Fire Game 【身手BFS】的更多相关文章

  1. FZU 2150 fire game (bfs)

    Problem 2150 Fire Game Accept: 2133    Submit: 7494Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  2. FZU 2150 Fire Game(BFS)

    点我看题目 题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的.问你最少花多少时间 ...

  3. FZU 2150 Fire Game(点火游戏)

    FZU 2150 Fire Game(点火游戏) Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description - 题目描述 ...

  4. FZU 2150 Fire Game (暴力BFS)

    [题目链接]click here~~ [题目大意]: 两个熊孩子要把一个正方形上的草都给烧掉,他俩同一时候放火烧.烧第一块的时候是不花时间的.每一块着火的都能够在下一秒烧向上下左右四块#代表草地,.代 ...

  5. FZU 2150 Fire Game

    Fire Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  6. (FZU 2150) Fire Game (bfs)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 Problem Description Fat brother and Maze are playing ...

  7. 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 ...

  8. 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) ...

  9. FZU Problem 2150 Fire Game(bfs)

    这个题真要好好说一下了,比赛的时候怎么过都过不了,压点总是出错(vis应该初始化为inf,但是我初始化成了-1....),wa了n次,后来想到完全可以避免这个问题,只要入队列的时候判断一下就行了. 由 ...

随机推荐

  1. Nagios+pnp4nagios+rrdtool 安装配置nagios被监控端NRPE配置(二)

    NRPE监控插件基础 NRPE总共由两部分组成: (1).check_nrpe插件,运行在监控主机上. (2).NRPE daemon,运行在远程的linux主机上(通常就是被监控机) 整个的监控过程 ...

  2. java注解(一)

    虽然平时有使用注解,不过没有深入了解,今天无聊,重新从基础深入了解整理下: java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.     注解不会也 ...

  3. poj 2992 Divisors 整数分解

    设m=C(n,k)=n!/((n-k)!*k!) 问题:求m的因数的个数 将m分解质因数得到 p1有a1个 p2有a2个 .... 因为每一个质因数能够取0~ai个(所有取0就是1,所有取ai就是m) ...

  4. windows phone (13) 样式继承

    原文:windows phone (13) 样式继承 在上一遍文章中已经介绍到可以在Resources集合中定义样式,我们也可以在一个样式上引用其他的样式,这就是继承的概念,使用方法是将引用的样式放置 ...

  5. LeetCode18:4Sum

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  6. veridata实验例(3)验证veridata发现insert操作不会导致同步

    veridata实验例(3)验证veridata发现insert操作不会导致同步 续接:<veridata实验举例(2)验证表BONUS与表SALGRADE两节点同步情况>,地址:点击打开 ...

  7. JAVA程序生成XML标准化的文件格式,缩进,美化。

    //他开始Document映射到文件 TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer t ...

  8. ORA-00913错误:PL/SQL: ORA-00913: too many values

    ORA-00913错误 描写叙述:PL/SQL: ORA-00913: too many values 目标:编写一个能够循环插入数据的脚本 操作过程: SQL> desc tcustmer N ...

  9. 利用ffmpeg将H264解码为RGB

    因为公司买到了一个不提供解码器的设备,我不得已还要做解码的工作.在网上找了一圈,H264解码比較方便的也就是ffmpeg一系列的函数库了,原本设备中也是用这套函数库解码,但厂家不给提供,没办法,仅仅得 ...

  10. jspsmart(支持中文下载)

    将excel文件从jsp页面导入到数据库,先将文件上传到server,然后读取,最后删除掉上传//要加encType="multipart/form-data"<form a ...