HDU 2612 Find a way 简单BFS
来源:互联网 发布:网络语言粗鄙化的原因 编辑:程序博客网 时间:2024/06/07 01:56
由于HDU进不去,题目就省了。
题意:求两个人从Y和M走到同一个@的最短路步数和,#表示墙.表示路。
解题思路:分别对两个起点进行BFS,然后用两个数组进行每个点的存储,最后暴力扫找到最小值就好了。以下是我的代码
#include <cstdio>#include <iostream>#include <queue>#include <memory.h>#define maxn 205using namespace std;int flag[maxn][maxn];char pic[maxn][maxn];int lenth1[maxn][maxn],lenth2[maxn][maxn];int n,m;int mm[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};struct trip{ int x,y,step;};int check(int x,int y){ if(x<0||x>=n||y<0||y>=m||pic[x][y]=='#') return 1; return flag[x][y];}int bfs(int r,int s,int lenth[][maxn]){ memset(flag,0,sizeof(flag)); memset(lenth,0,sizeof(lenth)); queue<trip> q; trip now,next; now.x=r; now.y=s; now.step=0; flag[r][s]=1; q.push(now); while(!q.empty()) { now=q.front(); q.pop(); for(int i=0; i<4; i++) { next.x=now.x+mm[i][0]; next.y=now.y+mm[i][1]; if(check(next.x,next.y)) continue; next.step=now.step+1; lenth[next.x][next.y]=next.step; flag[next.x][next.y]=1; q.push(next); } }}int main(){ //freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&m)) { int yx,yy,mx,my; int sum,mm=0x3f3f3f3f; for(int i=0; i<n; i++) scanf("%s",pic[i]); for(int i=0; i<n; i++) for(int j=0; j<m; j++) { if(pic[i][j]=='Y') { yx=i; yy=j; } if(pic[i][j]=='M') { mx=i; my=j; } } bfs(yx,yy,lenth1); bfs(mx,my,lenth2); for(int i=0;i<n;i++) for(int j=0;j<m;j++) if(pic[i][j]=='@') { sum=lenth1[i][j]+lenth2[i][j]; mm=mm<sum?mm:sum; } printf("%d\n",mm*11); } return 0;}
阅读全文
0 0
- HDU 2612 Find a way 简单BFS
- hdu 2612 Find a way(BFS)
- HDU 2612 Find a way(两次BFS)
- HDU 2612 Find a way(BFS)
- HDU 2612 Find a way BFS
- Hdu 2612 Find a way(bfs)
- HDU 2612 Find a way (BFS)
- HDU 2612--Find a way【BFS】
- HDU 2612 Find a way(双BFS)
- hdu 2612 Find a way(双向bfs)
- HDU 2612 Find a way (bfs)
- HDU 2612 Find a way(bfs)
- HDU - 2612 - Find a way (BFS)
- HDU 2612 Find a way【bfs】
- BFS-HDU-2612-Find a Way
- HDU 2612 Find a way (BFS)
- hdu 2612 Find a way (BFS)
- HDU 2612 Find a way(两次bfs)
- Android编程规范
- Android 闹钟AlarmManager简略使用说明
- 域名解析过程和域名劫持、域名污染
- 暑期集训之Trailing Zeroes (III)
- Android_贝塞尔曲线
- HDU 2612 Find a way 简单BFS
- ERROR:../../gi/pygi-argument.c:1586:
- 计算机网络、OSI模型、TCP\IP族
- lua 创建二维数组
- svn 拉分支
- google代理服务器设置
- Python中如何使用以及去除时间序列数据中的趋势信息
- 记录下CSDN博客排上名,嘻嘻,不再是千里之外了
- 对决