zoukankan      html  css  js  c++  java
  • RQNOJ 34 紧急援救

    题目描述

    话说2007年8月5日,Mike博士神秘失踪了,最后发现是被外星人绑架了,幸好外星人目前还是在地球上活动,并且知道外星人不了解地球,幸好,Milk博士身上有无线信号发送装置,我们终于确定了他的位置,必须赶快到那里去救他。

    根据无线信号发送装置,我们确定出一张地图,为了尽快寻找到Mike博士,于是这个光荣和艰巨的任务便交给了你,编写程序,通过使用一张地图帮助研究所确定从研究所出发找到Mike博士最短距离。

    数据范围: n<=1000

    输入格式

    第一行为n

    第二行为n*n的地图(其中0表示通路,1表示死路)

    最后两行每行有两个数字,分别表示研究所的坐标和博士信号所在的位置。

    输出格式

    一个数字k,表示从研究所出发找到Milk博士的最短距离。

    裸宽搜。

    BFS队列要开大,开50W拿了80分,悲伤

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 int mp[1100][1100];
     8 bool vis[1100][1100];
     9 char c[1100];
    10 int n;
    11 int sx,sy,tx,ty;
    12 int mx[5]={0,1,0,-1,0},
    13     my[5]={0,0,1,0,-1};
    14 int BFS(){
    15     int hd=1,tl=0;
    16     int qx[1000000],qy[1000000],qans[1000000];
    17     qx[++tl]=sx;qy[tl]=sy;qans[tl]=0;
    18     vis[sx][sy]=1;
    19     while(hd<=tl){
    20         for(int i=1;i<=4;i++){
    21             int nx=mx[i]+qx[hd];
    22             int ny=my[i]+qy[hd];
    23             if(nx>0 && nx<=n && ny>0 && ny<=n && 
    24                 !vis[nx][ny] && !mp[nx][ny]){
    25                 vis[nx][ny]=1;    
    26                 qx[++tl]=nx;
    27                 qy[tl]=ny;
    28                 qans[tl]=qans[hd]+1;
    29                 if(nx==tx && ny==ty){
    30                     return qans[tl];
    31                 }
    32             }
    33         }
    34         hd++;
    35     }
    36 }
    37 int main(){
    38     scanf("%d",&n);
    39     int i,j;
    40     for(i=1;i<=n;i++){
    41         scanf("%s",c+1);
    42         for(j=1;j<=n;j++){
    43             mp[i][j]=c[j]-'0';
    44         }
    45     }
    46     scanf("%d%d%d%d",&sx,&sy,&tx,&ty);
    47     printf("%d
    ",BFS());
    48     return 0;
    49 }
  • 相关阅读:
    Flume(二)Flume的Source类型
    Hadoop(四)HDFS的高级API操作
    Flume(一)Flume的基础介绍与安装
    MySQL 的索引优化
    CentOS7.5安装Mysql5.7.22
    Hadoop(三)HDFS读写原理与shell命令
    iOS NSDictionary JSON 相互转换
    iOS UICollectionView 在滚动时停在某个item位置上
    vim的基本使用方法
    初次使用git上传代码到github远程仓库
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5668154.html
Copyright © 2011-2022 走看看