P1030 乳草的入侵
时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

USACO OCT09 6TH

描述

Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草。可惜天不从人愿,他在植物大战人类中败下阵来。邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地。

草地像往常一样,被分割成一个高度為Y(1 <= y <= 100), 宽度為X(1 <= x <= 100)的直角网格。(1,1)是左下角的格(也就是说坐标排布跟一般的X,Y坐标相同)。乳草一开始佔领了格(Mx,My)。每个星期,乳草传播到已被乳草佔领的格子四面八方的每一个没有很多石头的格(包括垂直与水平相邻的和对角线上相邻的格)。1周之后,这些新佔领的格又可以把乳草传播到更多的格裡面了。

Bessie想要在草地被乳草完全佔领之前尽可能的享用所有的牧草。她很好奇到底乳草要多久才能佔领整个草地。如果乳草在0时刻处於格(Mx,My),那麼还在那个时刻它们可以完全佔领入侵整片草地呢(对给定的数据总是会发生)?

草地由一个图片表示。"."表示草,而"*"表示大石。比如这个X=4, Y=3的例子。

....
     ..*.
     .**.

如果乳草一开始在左下角(第1排,第1列),那麼草地的地图将会以如下态势发展:

....  ....  MMM.  MMMM  MMMM  
      ..*.  MM*.  MM*.  MM*M  MM*M  
      M**.  M**.  M**.  M**.  M**M  
星期数  0     1     2     3     4

乳草会在4星期后佔领整片土地。

输入格式

* 第一行: 四个由空格隔开的整数: X, Y, Mx, My

* 第2到第Y+1行: 数据的第y+1行由X个字符("."表示草地,"*"表示大石),描述草地的
第(Y+2-y)行。

输出格式

* 第一行: 一个单独的整数表示最后一个不是大石块的格子被乳草佔领的星期数。

测试样例1

输入

4 3 1 1 
.... 
..*. 
.**.

输出

4

 

宽搜(教程:http://rapheal.iteye.com/blog/1526861  感觉图配上蛮好理解的)
//这题坐标无比奇怪啊
给你一张图,

一开始要么是平地要么是石头
突然乳草进来啦
乳草每分钟会扩张到八联通的平地上(石头上不长)
求最快多少分钟整张地图除了石头就是乳草
保证数据合法
#include <iostream>
#include <stdio.h>
#define inf 233333333
using namespace std;
const int Maxn = ;
const int Maxq = ;
int n , m , x , y , ch;
int mp[Maxn][Maxn];//´æÒ»¸öµã×î¿ì±»²ÝÕ¼ÁìµÄʱ¼ä£¬-1±íʾÊÇʯͷ
int qx[Maxq] , qy[Maxq] , qt[Maxq];//´æ¶ÓÁÐ
int h , t;//¶ÓÁеĿªÊ¼/½áβ
bool vis[Maxn][Maxn];//ÓÉÓÚÊÇbfsËùÒÔµ½Ò»¸öµã¿Ï¶¨ÊÇ×î¶Ì·
const int ss[][] = { { , , - , , , , - , - } , { , , , - , , - , , - } };//°ËÁªÍ¨
int main() {
cin>>m>>n>>y>>x;
for(int i=; i<=n; ++i)
for(int j=; j<=m; ++j) {
while(ch = getchar() , ch != '.' && ch !='*');//while(¶ÁÈëÒ»¸ö×Ö·û , Èç¹ûÄǸö×Ö·û²»ÊÇ'.'»òÕß'*'¾ÍÒ»Ö±¶Á );
if(ch == '.')
mp[i][j] = inf;
else
mp[i][j] = -;
}
/*ÒÔÉÏΪ³õʼ»¯*/
qx[h = t = ] = n-x+;
qy[] = y;
qt[] = ;
while(h <= t) {
int nx = qx[h] , ny = qy[h] , nt = qt[h];
h++;
if(vis[nx][ny]) continue;//Èç¹û·ÃÎʹý¾Ícontinue
if(mp[nx][ny] == -) continue;//Èç¹ûÊÇʯͷ¾Ícontinue
vis[nx][ny] = ;//±ê¼ÇΪ×ß¹ý
mp[nx][ny] = nt;//¼Ç¼×ßµ½Õâ¸öµãµÄʱ¼ä
for(int i=; i<; ++i) {
int x = nx+ss[][i] , y = ny+ss[][i];
if(x <= || x > n || y <= || y > m) continue;//Èç¹û°ËÁªÍ¨ºÏ·¨¾Í¶ª½ø¶Ó
qx[++t] = x;
qy[t] = y;
qt[t] = nt + ;
}
}
/*ÒÔÉÏΪbfs*/
int ans = ;
for(int i=; i<=n; ++i) {
for(int j=; j<=m; ++j) {
//cout<<mp[i][j]<<"\t";
ans = max(ans , mp[i][j]);
}//puts("")
}
/*ÒÔÉÏΪͳ¼Æ´ð°¸*/
cout<<ans;
}

zls

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
int mx,my,n,m;
int ans=;
char a[][];
int f[][];
int head,tail=,qx[],qy[];
int xx[]={-,,,,-,,-,};
int yy[]={,,-,,-,,,-}; void bfs()
{
qx[]=mx,qy[]=my;
f[mx][my]=;
while(head!=tail)
{
int x=qx[head],y=qy[head];head++;
ans=f[x][y];
for(int i=;i<;i++)
{
int dx=x+xx[i],dy=y+yy[i];
if(dx<||dy<||dx>m||dy>n||a[dx][dy]=='*'||f[dx][dy]!=-)continue;
f[dx][dy]=f[x][y]+;
qx[tail]=dx;qy[tail]=dy;tail++;
}
} }
int main()
{
cin>>n>>m>>my>>mx;//m hang n lie
memset(f,-,sizeof(f));
for(int i=m;i>;i--)scanf("%s",a[i]+);
bfs();
cout<<ans;
puts(""); return ;
}

//不看清坐标毁一生

 
 

乳草的入侵//BFS的更多相关文章

  1. [TYVJ] P1030 乳草的入侵

    乳草的入侵 背景 Background USACO OCT09 6TH   描述 Description Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物 ...

  2. 3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵

    3406: [Usaco2009 Oct]Invasion of the Milkweed 乳草的入侵 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 8 ...

  3. TYVJ P1030 乳草的入侵 Label:跳马问题

    背景 USACO OCT09 6TH 描述 Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份佔领了一 ...

  4. Tyvj 1030 乳草的入侵

    以一个简单的BFS对基础搜索做一个收尾好了. 给一个草,然后以这棵草为九宫格的中心,每周向周围八个方向扩散,问多少个星期能把这个农场占满. 遍历整个map,最后一个出队列的对应的星期数就是所求. // ...

  5. BZOJ 3406 乳草的入侵

    BFS. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...

  6. 乳草的侵占(BFS)

    armer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份占领了一片立足之地. 草地像往常一样,被分割成一个高度 ...

  7. [USACO09OCT]Invasion of the Milkweed】乳草的侵占-C++

    Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份占领了一片立足之地. 草地像往常一样,被分割成一个高 ...

  8. BZOJ-USACO被虐记

    bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...

  9. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

随机推荐

  1. Nginx+Center OS 7.2 开机启动设置(转载)

    centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度.关 ...

  2. js禁止页面复制 禁用页面右键菜单的代码

    js实现禁止页面复制功能.禁用页面右键菜单等功能.  <body oncontextmenu="return false">禁用网页右键菜单,但是仍然可以使用快捷键复制 ...

  3. php正则表达式总结第1弹

    介绍几个我用到的php正则表达式 1. 一篇文章的链接,我需要去掉以 /hotels/打头的链接,可用下面正则 $content = preg_replace('/<a(.*?)href=&qu ...

  4. python杂记-5(装饰器)

    1.被装饰的函数有参数(一个参数): def w1(func): def inner(arg): # 验证1 # 验证2 # 验证3 return func(arg) return inner @w1 ...

  5. 【Web学习日记】——C#引用WebService,从配置文件改变引用地址

    开发环境:Win7 32位,开发工具:VS2013,.Net:4.0 初用WebService,很多地方都搞不清楚怎么回事,但稍作研究之后,也就用上了,根本就没有考虑后续事情. 但是,随着项目的进行, ...

  6. [原创]PostgreSQL Plus Advince Server在 HA环境中一对多的Stream Replication配置(三)

    五.准备HA环境1.准备yum源a.安装vsftp服务,将光盘镜像copy到本地ftp目录作为yum源.[root@s1 ~]# mount 可以看到cdrom已经挂载了,首先安装vsftp服务[ro ...

  7. Python实战(2)

    在安装python第三方插件库的时候遇到了这个错误 遇到这种问题可以”转战“国内的第三方镜像,问题便可迎刃而解.例如豆瓣镜像——http://pypi.douban.com/simple/ 先安装ea ...

  8. iOS常见问题(2)

    一.模拟器黑屏 解决方法: 二.打代码时,Xcode没提示 解决方法: 0. 点击Preferences 1. 进入Text Editing 2. 勾选 三.有时候可能在勾选 Autolayout的时 ...

  9. Hadoop启动异常情况解决方案

    1. 启动时报WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using b ...

  10. busying

    罪过 ,最近好忙  ,好久没有发表东西了, 连英语单词都写错了