青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

USACO Section 2.4 Overfencing

Overfencing

Kolstad and Schrijvers

Farmer John went crazy and created a huge maze of fences out in a field. Happily, he left out two fence segments on the edges, and thus created two "exits" for the maze. Even more happily, the maze he created by this overfencing experience is a `perfect' maze: you can find a way out of the maze from any point inside it.

Given W (1 <= W <= 38), the width of the maze; H (1 <= H <= 100), the height of the maze; 2*H+1 lines with width 2*W+1 characters that represent the maze in a format like that shown later - then calculate the number of steps required to exit the maze from the `worst' point in the maze (the point that is `farther' from either exit even when walking optimally to the closest exit). Of course, cows walk only parallel or perpendicular to the x-y axes; they do not walk on a diagonal. Each move to a new square counts as a single unit of distance (including the move "out" of the maze.

Here's what one particular W=5, H=3 maze looks like:

+-+-+-+-+-+
|         |
+-+ +-+ + +
|     | | |
+ +-+-+ + +
| |     |
+-+ +-+-+-+

Fenceposts appear only in odd numbered rows and and odd numbered columns (as in the example). The format should be obvious and self explanatory. Each maze has exactly two blank walls on the outside for exiting.

PROGRAM NAME: maze1

INPUT FORMAT

Line 1: W and H, space separated
Lines 2 through 2*H+2: 2*W+1 characters that represent the maze

SAMPLE INPUT (file maze1.in)

5 3
    +-+-+-+-+-+
    |         |
    +-+ +-+ + +
    |     | | |
    + +-+-+ + +
    | |     |
    +-+ +-+-+-+
    

OUTPUT FORMAT

A single integer on a single output line. The integer specifies the minimal number of steps that guarantee a cow can exit the maze from any possible point inside the maze.

SAMPLE OUTPUT (file maze1.out)

9
    
The lower left-hand corner is *nine* steps from the closest exit.

Analysis

We can solve this with a standard flood fill, using a queue to implement breadth first search. It is convenient to leave the maze in its ASCII format and just look at it as a bunch of characters, with non-space characters being walls.


Code
/*
ID: braytay1
PROG: maze1
LANG: C++
*/

#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<assert.h>
#include 
<algorithm>
#include 
<queue>
using namespace std;
queue
<int> qq;
int W,H;
char map[202][80];
int tracy[202][80][2];
int x1=-1,y1=-1,x2=-1,y2=-1;
bool isIn(int x,int y){
    
if (x<=0||x>=2*H||y<=0||y>=2*W) return false;
    
else return true;
}

void BFS(int tra){
    
int col,row,s;
    
while (!qq.empty()){
        col
=qq.front();
        qq.pop();
        row
=qq.front();
        qq.pop();
        s
=qq.front();
        qq.pop();
        
if (tracy[col][row][tra]>0continue;
        tracy[col][row][tra]
=s;
        
if (map[col-1][row]!='-'&&isIn(col-2,row)) {qq.push(col-2);qq.push(row);qq.push(s+1);}
        
if (map[col+1][row]!='-'&&isIn(col+2,row)) {qq.push(col+2);qq.push(row);qq.push(s+1);}
        
if (map[col][row-1]!='|'&&isIn(col,row-2)) {qq.push(col);qq.push(row-2);qq.push(s+1);}
        
if (map[col][row+1]!='|'&&isIn(col,row+2)) {qq.push(col);qq.push(row+2);qq.push(s+1);}
    }

}

int max(int a[202][80][2],int tra,int h,int w){
    
int maximum=-1;
    
for (int i=0;i<h;i++){
        
for (int j=0;j<w;j++){
            
if (maximum<a[i][j][tra]) maximum=a[i][j][tra];
        }

    }

    
return maximum;
}


int main(){
    
//Initialize
    FILE *fin, *fout;
    fin 
= fopen("maze1.in""r");
    fout 
= fopen("maze1.out""w");
    assert(fin 
!= NULL && fout != NULL);
    fscanf(fin,
"%d %d\n",&W,&H);
    
for (int i=0;i<=2*H;i++){
        fgets(map[i], 
sizeof(map[i]), fin);
    }

    memset(tracy,
-1,sizeof(tracy));
    
//edge search
    for (int i=0;i<=2*W;i++){
        
if (map[0][i]!='+'&&map[0][i]!='-'{
            
if (x1==-1&&y1==-1{x1=1;y1=i;}
            
else {x2=1;y2=i;}
        }

        
if (map[2*H][i]!='+'&&map[2*H][i]!='-'{
            
if (x1==-1&&y1==-1{x1=2*H-1;y1=i;}
            
else {x2=2*H-1;y2=i;}
        }

    }

    
for (int i=0;i<=2*H;i++){
        
if (map[i][0]!='+'&&map[i][0]!='|'{
            
if (x1==-1&&y1==-1{x1=i;y1=1;}
            
else {x2=i;y2=1;}
        }

        
if (map[i][2*W]!='+'&&map[i][2*W]!='|'{
            
if (x1==-1&&y1==-1{x1=i;y1=2*W-1;}
            
else {x2=i;y2=2*W-1;}
        }

    }

    qq.push(x1);qq.push(y1);qq.push(
1);
    BFS(
0);
    qq.push(x2);qq.push(y2);qq.push(
1);
    BFS(
1);
    
for (int i=0;i<=2*H;i++){
        
for (int j=0;j<=2*W;j++){
            
int a1,a2;
            a1
=tracy[i][j][0];
            a2
=tracy[i][j][1];
            tracy[i][j][
0]=(a1<a2)?a1:a2;
        }

    }

    
int res;
    res
=max(tracy,0,2*H+1,2*W+1);
    
//Output
    fprintf(fout, "%d\n", res);
    
return 0;
}

posted on 2008-08-15 16:55 幻浪天空領主 閱讀(166) 評論(0)  編輯 收藏 引用 所屬分類: USACO

<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(1)

隨筆檔案(2)

文章分類(23)

文章檔案(22)

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利在线看| 久久综合色播五月| 亚洲国产日韩欧美一区二区三区| 一本色道久久综合亚洲精品高清 | 久久久精品午夜少妇| 亚洲视频综合| 欧美成人r级一区二区三区| 久久久久88色偷偷免费| 国产精品xxxav免费视频| 亚洲精品韩国| 亚洲精品永久免费精品| 久久人人97超碰精品888| 久久久久久久久久久成人| 国产精品久久久久久久久久妞妞| 亚洲精选在线| 洋洋av久久久久久久一区| 欧美成人亚洲成人| 欧美成人免费全部观看天天性色| 国内精品久久久久久久影视蜜臀 | 欧美精品粉嫩高潮一区二区 | 亚洲天堂第二页| 亚洲性xxxx| 欧美午夜在线视频| 中文在线资源观看网站视频免费不卡 | 欧美大胆a视频| 欧美激情91| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久网站免费| 欧美 日韩 国产 一区| 在线观看的日韩av| 老司机精品久久| 欧美国产成人精品| 日韩视频永久免费| 欧美日韩一区在线视频| 一区二区三区免费看| 午夜精品久久久久影视| 国产精品爽黄69| 欧美综合77777色婷婷| 蜜臀a∨国产成人精品| 亚洲日本久久| 欧美日韩三级在线| 亚洲在线视频观看| 久久综合色一综合色88| 亚洲精品久久久久久久久久久久久 | 久久久精品欧美丰满| 在线观看三级视频欧美| 欧美激情91| 亚洲影音一区| 另类天堂av| 一本色道久久综合亚洲精品不 | 一区二区三区在线观看视频| 美女主播一区| 一区二区冒白浆视频| 久久精品二区三区| 亚洲精品无人区| 国产精品一区二区三区久久| 久久精品国产欧美激情| 亚洲日本一区二区三区| 性色av一区二区三区红粉影视| 在线观看日韩欧美| 欧美性做爰毛片| 久久久综合精品| 一二三四社区欧美黄| 久久综合中文| 亚洲影视在线播放| 亚洲高清不卡一区| 国产精品国产三级国产专播品爱网| 久久国产成人| 亚洲人成在线观看网站高清| 久久精品国产精品亚洲精品| 日韩午夜三级在线| 影音先锋久久精品| 久久久五月婷婷| 亚洲一区二区在线免费观看视频| 狠狠色狠狠色综合| 国产精品日韩久久久久| 欧美国产在线观看| 久久久www成人免费精品| 亚洲作爱视频| 亚洲国产91精品在线观看| 欧美在线亚洲| 亚洲字幕一区二区| 亚洲美洲欧洲综合国产一区| 好吊妞**欧美| 国产欧美日韩伦理| 国产精品久久精品日日| 欧美精品色网| 欧美成人在线免费观看| 久久久久国产精品午夜一区| 亚洲欧美中文日韩在线| 中文国产亚洲喷潮| 亚洲精品一二| 亚洲黄色有码视频| 欧美激情久久久| 女人香蕉久久**毛片精品| 久久久国产精品一区二区三区| 香蕉久久夜色| 免费精品视频| 久热精品在线视频| 久久综合狠狠综合久久综合88| 羞羞答答国产精品www一本| 亚洲一区日韩| 亚洲尤物精选| 亚洲欧美视频在线观看视频| 亚洲一区尤物| 先锋影音一区二区三区| 亚洲欧美一区二区原创| 欧美一区二区三区免费视| 亚洲欧美日韩精品久久奇米色影视| 亚洲亚洲精品三区日韩精品在线视频 | 国产欧美日韩一区| 国产欧美日本一区视频| 国产欧美一区二区三区沐欲| 国产精品视频网站| 国产日韩欧美在线播放| 国产乱码精品一区二区三区av| 国产精品一区免费观看| 国产欧美日韩亚洲精品| 国产亚洲欧美另类中文| 国内久久婷婷综合| 亚洲电影观看| 日韩亚洲一区在线播放| 亚洲视频在线观看一区| 欧美一区二区在线免费观看| 久久精品国产免费观看| 欧美jizz19hd性欧美| 亚洲国产欧美日韩精品| 99精品福利视频| 午夜精品www| 久久久亚洲精品一区二区三区| 久久婷婷国产综合尤物精品| 欧美激情免费观看| 国产精品免费看| 国产亚洲一区在线| 亚洲人精品午夜在线观看| 一区二区三区四区国产精品| 欧美影视一区| 欧美激情视频网站| 亚洲夜晚福利在线观看| 久久久精品五月天| 欧美日韩一区综合| 一区在线播放视频| 国产精品99久久久久久白浆小说| 欧美一级视频精品观看| 欧美搞黄网站| 亚洲欧美日韩国产中文在线| 久久综合久久久| 欧美午夜视频| 91久久精品网| 亚洲欧美一级二级三级| 欧美成人免费全部| 亚洲综合视频一区| 欧美成人一区二区| 国产毛片一区| 亚洲毛片一区| 久久一区二区三区国产精品| 9人人澡人人爽人人精品| 久久动漫亚洲| 国产精品久久久爽爽爽麻豆色哟哟| 激情视频一区二区三区| 国产精品99久久久久久久女警| 久久五月天婷婷| 亚洲视频中文| 欧美精品一区二区三区蜜桃| 激情综合久久| 久久不射电影网| 中文一区二区| 欧美日韩成人综合天天影院| 在线观看欧美视频| 久久精品国产清自在天天线| 99re66热这里只有精品4| 巨乳诱惑日韩免费av| 国产一区二区丝袜高跟鞋图片| 亚洲一区美女视频在线观看免费| 亚洲成在线观看| 久久九九热re6这里有精品| 国产伦一区二区三区色一情| 亚洲深爱激情| 亚洲精品久久久久久久久久久久| 久久亚洲国产精品一区二区| 国产日韩精品入口| 欧美一区成人| 亚洲午夜伦理| 国产精品久久国产精麻豆99网站| 一本大道av伊人久久综合| 亚洲国产精品一区二区第四页av| 久久久久国产精品厨房| 一区在线观看| 欧美暴力喷水在线| 久久亚洲精品中文字幕冲田杏梨| 国产日韩av一区二区| 欧美在线影院| 欧美亚洲视频在线看网址| 国产精品中文字幕欧美| 欧美在线视频导航| 欧美在线亚洲一区| 黄色成人91| 欧美电影免费观看高清| 欧美成黄导航| 亚洲深夜福利视频|