称号: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. Spring MVC中一般 普通类调用service

    在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.S ...

  2. 50个最受网友欢迎的HTML5资源下载列表

    完整附件下载地址:http://down.51cto.com/data/413867 附件预览: HTML 5游戏源码精选(共含9个游戏源码) http://down.51cto.com/zt/227 ...

  3. C# 通信学习笔记

    C# 通信学习笔记 DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不 ...

  4. 【SSH 基础】浅谈Hibernate关系映射(4)

    继上篇博客 多对多关联映射(单向) 多对多对象关系映射,须要增加一张新表完毕基本映射. Hibernate会自己主动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联,多 ...

  5. 利用h5标签在网页上播放音乐

    方案1: <embed src="等一分钟.mp3" id="aa"> <input type=button value=暂停 onclick ...

  6. ecshop中getAll ,getOne ,getRow的区别

    ecshop的数据库抽象层其实就是在模仿adodb $GLOBALS['db']->getAll($sql);//以二维关联数组返回所有数据 $GLOBALS['db']->getOne( ...

  7. GlusterFS源代码解析 —— GlusterFS 简单介绍

    原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/24564185 -- -- 本系列博客源代码是基于GlusterFS 3 ...

  8. Android分屏显示LogCat

    Eclipse里有非常多界面组件,文件列表.编辑区.类结构等等,在这么多界面组件里,再打开一个Logcat就基本没有什么空间了.与其挤在一起还不如分开成两个窗体. 或者你有两个屏幕,想一个屏幕编辑,一 ...

  9. SAP ABAP计划 SY-REPID与SY-CPROG差异

    首先,它的两个解释   sy-repid is the name of the current program.  "当前程序的程序名                             ...

  10. BDB (Berkeley DB)简要数据库(转载)

    使用最近DBD.然后搜了下相关资料,首先公布的是一门科学: 转会http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hs ...