zoukankan      html  css  js  c++  java
  • B:营救铁达尼号

    Problem B: 营救铁达尼号

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 204  Solved: 54
    [Submit][Status][Web Board]

    Description

    铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。

    Input

    第一行为n,下面是一个n*n的0,1矩阵,表示海洋地图
    最后一行为四个小于n的整数,分别表示哥伦比亚号和铁塔尼号的位置。

    Output

    哥伦比亚号到铁塔尼号的最短距离,答案精确到整数。

    Sample Input

    3
    001
    101
    100
    1 1 3 3

    Sample Output

    4

    HINT

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n,a,b,c,d,pic[1001][1001],h[1000001][2];
     4 int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
     5 char amap[1001][1001];
     6 void bfs(int x1,int y1,int x2,int y2)
     7 {
     8     int head,tail,x,y;
     9     pic[x1][y1]=1;
    10     head=1;
    11     tail=1;
    12     h[1][0]=x1;
    13     h[1][1]=y1;
    14     while(head<=tail)
    15     {
    16         for (int i=0;i<=3;i++)
    17         {
    18             x=h[head][0]+dx[i];
    19             y=h[head][1]+dy[i];
    20             if (x>=1 && x<=n && y>=1 &&y<=n && pic[x][y]==0)
    21             {
    22                 tail++;
    23                 h[tail][0]=x;
    24                 h[tail][1]=y;
    25                 pic[x][y]=pic[h[head][0]][h[head][1]]+1;
    26                 if (x==x2 && y==y2)
    27                 break;
    28             }
    29         }
    30         head++;
    31     }
    32 }
    33 int main()
    34 {
    35     cin>>n;
    36     for (int i=1;i<=n;i++) 
    37     for (int j=1;j<=n;j++)
    38     {
    39         cin>>amap[i][j];
    40         pic[i][j]=amap[i][j]-48;
    41     }
    42     cin>>a>>b>>c>>d;
    43     bfs(a,b,c,d);
    44     cout<<pic[c][d]-1<<endl;
    45     return 0;
    46 } 
    save
  • 相关阅读:
    Fence Repair(POJ 3253)
    Saruman's Army(POJ 3069)
    Best Cow Line(POJ 3617)
    一往直前!贪心法
    最基础的“穷竭搜索”
    Lake Counting(POJ 2386)
    Ants(POJ 1852)
    热身题
    分布式锁的三种实现方式
    Redis在实际开发中面临的问题
  • 原文地址:https://www.cnblogs.com/LHR-HY/p/6785752.html
Copyright © 2011-2022 走看看