sdut 2779 找朋友(dfs)
2017-02-20 21:29
183 查看
Problem Description
X,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。
为了简化问题,我们把地图抽象为n*m的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 m。矩阵中’X’表示X所在的初始坐标,’Y’表示Y的位置 , ’#’表示当前位置不能走,’ * ’表示当前位置可以通行。X每次只能向上下左右的相邻的 ’*’ 移动,每移动一次耗时1秒。
Input
多组输入。每组测试数据首先输入两个整数n,m(1<= n ,m<=15 )表示地图大小。接下来的n 行,每行m个字符。保证输入数据合法。
Output
若X可以到达Y的家,输出最少时间,否则输出 -1。
Example Input
3 3
X#Y
Example Output
4
-1
X,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。
为了简化问题,我们把地图抽象为n*m的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 m。矩阵中’X’表示X所在的初始坐标,’Y’表示Y的位置 , ’#’表示当前位置不能走,’ * ’表示当前位置可以通行。X每次只能向上下左右的相邻的 ’*’ 移动,每移动一次耗时1秒。
Input
多组输入。每组测试数据首先输入两个整数n,m(1<= n ,m<=15 )表示地图大小。接下来的n 行,每行m个字符。保证输入数据合法。
Output
若X可以到达Y的家,输出最少时间,否则输出 -1。
Example Input
3 3
X#Y
#*# 3 3 X#Y *#* #*#
Example Output
4
-1
#include <cstdio> #include <cstring> #include <iostream> #include <queue> using namespace std; char map[20][20]; int book[20][20]; int move[4][2]={{0,1}, 4000 {0,-1}, {-1,0}, {1,0} }; struct node { int x; int y; int time; }p1,p2; int n,m; void bfs(int x,int y) { p1.x=x; p1.y=y; p1.time=0; queue <node> Q; Q.push(p1); book[x][y]=1; int k; while(!Q.empty()) { p1=Q.front(); Q.pop(); if(map[p1.x][p1.y]=='Y') { printf("%d\n",p1.time ); return ; } for(k=0;k<4;k++) { p2.x=p1.x+move[k][0]; p2.y=p1.y+move[k][1]; if(p2.x>=0&&p2.x<n&&p2.y>=0&&p2.y<m&&!book[p2.x][p2.y]&&map[p2.x][p2.y]!='#') { book[p2.x][p2.y]=1; p2.time=p1.time+1; Q.push(p2); } } } printf("-1\n"); } int main() { int i,j; while(cin>>n>>m) { memset(map,0,sizeof(map)); memset(book,0,sizeof(book)); for(i=0;i<n;i++) { scanf("%s",map[i]); } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(map[i][j]=='X') break; } if(j<m) break; } bfs(i,j); } return 0; } /*************************************************** User name: Result: Accepted Take time: 0ms Take Memory: 168KB Submit time: 2017-02-20 20:39:23 ****************************************************/
相关文章推荐
- 找朋友SDUT(2779)
- SDUT--找朋友(BFS&&DFS)
- SDUT--找朋友(BFS&&DFS)
- SDUT_2015寒假集训_BFS&DFS_D-找朋友
- SDUT 2779 找朋友
- SDUT 2779----找朋友(广搜)
- SDUTOJ 2779 找朋友(BFS&&DFS)
- 走迷宫sdut1269(附带dfs求所有路径与bfs求最佳路径)
- FZU1205/SDUT1157_小鼠迷宫问题(DFS+BFS)
- 图结构练习——BFSDFS——判断可达性 SDUT 2138
- SDUT 1400 马的走法 简单dfs
- sdut 3469 深度优先搜索练习之神奇的矩环(DFS)
- sdut2138图结构练习——BFSDFS——判断可达性
- SDUT 1125-New Game(DFS)
- [sdut] 1400 马的走法 dfs
- sdut 2449走迷宫【最简单的dfs应用】
- sdut 3361迷宫探索dfs
- !HDU 5305 朋友关系网一半网友问题-dfs-(暴力搜索)
- SDUT 1304-取数字问题(DFS)
- [SDUT](2138)图结构练习——BFSDFS——判断可达性 ---DFS(图)