HDU-2612-Find a way
来源:互联网 发布:java高斯模糊 编辑:程序博客网 时间:2024/04/29 21:54
//这题坑了我一晚上,用C++交不行,结果用C或者G++却过来,哎。。。。这题让我明白,如果用BFS,要保存到达“@”点的步数,bfs一直搜索,直到没发走才停。让后在主函数中进行输出比较。。。
AC代码:
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 205char map[N][N];int vis[N][N];int dp1[N][N],dp2[N][N];int x1,y1,x2,y2;struct node{ int x,y,step;}queue[N*N];int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};int n,m;void bfs1(){ struct node now,pre; queue[0].x=x1; queue[0].y=y1; queue[0].step=0; int e=0,h=1; while(e<h) { pre=queue[e]; for(int i=0;i<4;i++) { now.x=pre.x+dir[i][0]; now.y=pre.y+dir[i][1]; now.step=pre.step+1; if(now.x>=0&&now.x<n&&now.y>=0&&now.y<m&&!vis[now.x][now.y]&&map[now.x][now.y]!='#') { dp1[now.x][now.y]=now.step; vis[now.x][now.y]=1; queue[h++]=now; } } e++; } return;}void bfs2(){ struct node now,pre; queue[0].x=x2; queue[0].y=y2; queue[0].step=0; int e=0,h=1; while(e<h) { pre=queue[e]; for(int i=0;i<4;i++) { now.x=pre.x+dir[i][0]; now.y=pre.y+dir[i][1]; now.step=pre.step+1; if(now.x>=0&&now.x<n&&now.y>=0&&now.y<m&&!vis[now.x][now.y]&&map[now.x][now.y]!='#') { dp2[now.x][now.y]=now.step; vis[now.x][now.y]=1; queue[h++]=now; } } e++; } return;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { memset(dp1,0,sizeof(dp1)); memset(dp2,0,sizeof(dp2)); int i,j; 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]=='M') { x1=i; y1=j; } if(map[i][j]=='Y') { x2=i; y2=j; } } } memset(vis,0,sizeof(vis)); bfs1(); memset(vis,0,sizeof(vis)); bfs2(); int MIN=N*N; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(map[i][j]=='@'&&dp1[i][j]&&dp2[i][j]) { MIN=min(MIN,dp1[i][j]+dp2[i][j]); } } } printf("%d\n",MIN*11); } return 0;}
0 0
- HDU 2612 Find a way
- HDU-2612-Find a way
- hdu 2612 Find a way
- HDU 2612 Find a way
- hdu 2612 Find a way
- HDU 2612 Find a way
- HDU 2612 Find A Way
- hdu 2612 Find a way
- HDU-2612-Find a way
- HDU 2612 Find a way
- hdu 2612 Find a way
- HDU 2612 Find a way
- HDU-2612 Find a way
- HDU 2612 Find a way
- hdu 2612 Find a way
- HDU 2612 find a way
- HDU 2612 Find a way
- hdu 2612 Find a way
- JSON.parse()和JSON.stringify()
- hdu-1862 EXCEL排序
- 《机器学习系统设计》(1)
- Android spinner使用技巧
- iOS 第三方库全局键盘处理
- HDU-2612-Find a way
- 使用命令行编译时出现某些Android提供的类找不到的情况
- java计算2个时间相差的天数
- Java中的数字基本运算和精度问题
- 2015 Multi-University Training Contest 2 1006 Friends 壮压
- jpg图片转换为avi视频
- 暑假集训——贪心 P - Yogurt factory 奶牛场
- PAT (Advanced Level) 1032. Sharing (25) 求链表第一个交点,测试用例不保证有交点
- HDU-1251-统计难题(未完待续 还有两种方法还没整理)