【图论】【RQNOJ】校园迷宫
2010-07-12 17:47
274 查看
题目描述
总算期中考了,鄙人被教育局分配到了SY学校,当然是陪着很多人的。不知转了多少次车,总算到了。可惜的是,SY学校整个像个迷宫一样,就在门口贴了张学校地图。鄙人就开始研究地图了,但是学校错综复杂,等找到目的地,早就开考了。为此,鄙人取出随身携带的微型电脑(不知道从哪来的),向网上发去了求助书。注:只能往4个方向走:上、下、左、右。输入格式
第1行,二个数,N,M。接下来是一个N*M的矩阵,表示这个学校。(有N行,M列)。矩阵由2个数字组成。0:路;1:墙。路能走,墙不能走(这是基本常识。不过还是提醒一下,不然哪个牛又要飞檐走壁了)。
再是2行,第1行2个数X1,Y1表示校门口的坐标(即校门口在矩阵的第X1行,第Y1列)。第2行2个数X2,Y2表示鄙人的考场的坐标(即校门口在矩阵的第X2行,第Y2列)。
数据范围:0<M,N<=2000。0〈X1,X2〈=N,0〈Y1,Y2〈=M。
输出格式
一个数,表示最少要走的步数。如果走不到,则输出 No Answer!样例输入
#include<stdio.h> int xx[4]={1,-1,0,0}; int yy[4]={0,0,1,-1}; struct ss { int x,y,len; } line[2000001]; int l,r,n,m,ans; int map[2001][2001]; bool v[2001][2001]; int main() { scanf("%d%d",&n,&m); for (int i=1;i<=n;++i) for (int j=1;j<=m;++j) scanf("%d",&map[i][j]); int x1,x2,y1,y2; scanf("%d%d",&x1,&y1); scanf("%d%d",&x2,&y2); if (x1==x2&&y1==y2) { printf("0/n"); return 0; } r=1; line[1].x=x1; line[1].y=y1; v[x1][y1]=true; while (l<r) { ++l; int tex,tey; for (int i=0;i<4;++i) { tex=line[l].x+xx[i]; tey=line[l].y+yy[i]; if (tex>0&&tex<=n&&tey>0&&tey<=m) if ((map[tex][tey]==0)&&(!v[tex][tey])) { ++r; line[r].x=tex; line[r].y=tey; line[r].len=line[l].len+1; v[tex][tey]=1; if (tex==x2&&tey==y2) { printf("%d/n",line[r].len); return 0; } } } } printf("No Answer!/n"); return 0; }
相关文章推荐
- RQNOJ 195校园迷宫(简单BFS)
- 校园迷宫-rqnoj-195
- RQNOJ 校园迷宫-宽度优先搜索
- HDU 1272 小希的迷宫 (并查集+图论基本知识的运用)
- 数据结构实验之图论四:迷宫探索
- 【图论】【RQNOJ】寻找代表人
- 【图论】【RQNOJ】心许的回忆[Special Judge]
- 【图论】【RQNOJ】最优乘车
- 【RQNOJ】【图论】发明测试数据
- 数据结构实验之图论四:迷宫探索 【基于邻接表的广度优先搜索】
- SDUTOJ3361-数据结构实验之图论四:迷宫探索
- 【图论05】并查集 1002 小希的迷宫
- 数据结构实验之图论四:迷宫探索(邻接表与DFS)
- 【图论】【RQNOJ】智捅马蜂窝
- 【图论】【RQNOJ】拜年
- 【图论】【RQNOJ】拦截匪徒
- 【RQNOJ】【图论】宿命的P.S.S
- SDUT 数据结构实验之图论四:迷宫探索 (DFS)
- 数据结构实验之图论四:迷宫探索
- 数据结构实验之图论四:迷宫探索