营救
来源:互联网 发布:python手机编译器 编辑:程序博客网 时间:2024/05/17 06:36
Problem Description
铁达尼号遇险了,他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。
经过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1表明的是陆地,用0表明的是海洋。船只能从一个格子移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离?
经过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1表明的是陆地,用0表明的是海洋。船只能从一个格子移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离?
Input
输入有多组数据,每组数据第1行为n(n<=1000),下面是一个n*n的0、1矩阵,表示海洋地图
最后一行为四个小于n个整数,分别表示哥伦比亚号的铁达尼号的位置。
最后一行为四个小于n个整数,分别表示哥伦比亚号的铁达尼号的位置。
Output
对于每组数据匹配就输出哥伦比亚号到铁达尼号的最短距离,答案精确到整数。
Sample Input
30011011001 1 3 3
Sample Output
4
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[1010][1010],n,xx,yy,que[1000010][3],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};char b[1010];void search(int ,int );int main(){//freopen("a.txt","r",stdin);while(scanf("%d\n",&n)!=EOF){int i,j,x,y;memset(a,0,sizeof(a));memset(que,0,sizeof(que));for(i=1;i<=n;i++){gets(b);for(j=1;j<=n;j++)a[i][j]=b[j-1]-'0';}scanf("%d%d%d%d",&x,&y,&xx,&yy);if(x==xx&&y==yy) printf("0");else search(x,y);}return 0;}void search(int x,int y){int head=0,tail=1;que[1][0]=x; que[1][1]=y; que[1][2]=0; a[x][y]=1;while(head<tail){head++;for(int i=0;i<4;i++){x=que[head][0]+dx[i]; y=que[head][1]+dy[i];if(!a[x][y]&&x>0&&x<=n&&y>0&&y<=n){tail++;que[tail][0]=x;que[tail][1]=y;a[x][y]=que[tail][2]=que[head][2]+1;if(a[xx][yy]>0){printf("%d\n",a[xx][yy]);return;}}}}}
0 0
- 营救
- 营救
- 营救
- 营救皮卡丘
- 营救公主
- 营救公主
- 【a803】营救
- P1396 营救
- 2074 营救
- 洛谷-营救
- P1396 营救
- [P1396]营救
- TOJ-1335-营救天使
- 营救天使(bfs)
- 【BFS】wikioi 2074 营救
- 实现BFS之“营救”
- 实现BFS之“营救”
- 2324: [ZJOI2011]营救皮卡丘
- Linux 重要总结
- 一个等待GIF的制作网站
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 总结
- 分段线性变换
- YII数据流程浅析
- 营救
- Hello World
- 码农?屌丝?NO!这才是我们程序员
- Xcode—如何解决…has been modified since the precompiled header… was built的问题
- 问题1
- Research Junit4
- hdu 1024 Max Sum Plus Plus
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方案开发集成Apps
- week4_motion_of_ball_1(小球运动)——最基本