hdu Find a way
来源:互联网 发布:python 频域分析 编辑:程序博客网 时间:2024/05/21 13:56
这题很简单啊~
思路:
碰到M和Y都进行一遍广搜,然后碰到@时就把位移路径放入ans[i][j] 然后在搜索结束后遍历一遍ans,找出来最小值就行
注意:
1 如果ans用数组存又初始化的话,没有被赋值的都是0,在用min寻找最小距离时时注意跳过这些
2 因为你会搜索两次地图(一次M,一次Y)所以记得每搜索一次之前都要清空visit;
代码如下:
#include<iostream>#include<queue>#include<cstring>using namespace std;int m,n,visit[205][205],ans[205][205];char map[205][205];struct node{int x;int y;};node d,D;void bfs(int x,int y){queue<node>q;while(!q.empty())q.pop();d.x=x;d.y=y;q.push(d);int move[4][2]={0,1,1,0,0,-1,-1,0};while(!q.empty()){d=q.front();q.pop();for(int i=0;i<4;i++){D.x=d.x+move[i][0];D.y=d.y+move[i][1];if(D.x>=1 && D.x<=m && D.y>=1 && D.y<=n && !visit[D.x][D.y] && map[D.x][D.y]!='#'){visit[D.x][D.y]=visit[d.x][d.y]+1;if(map[D.x][D.y]=='@'){ans[D.x][D.y]+=visit[D.x][D.y];}q.push(D);}}}}int main(){while(cin>>m>>n){memset(map,0,sizeof(map));memset(ans,0,sizeof(ans));for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>map[i][j];}}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(map[i][j]=='Y' || map[i][j]=='M'){memset(visit,0,sizeof(visit));bfs(i,j); }}}int Min=99999;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(ans[i][j] && Min>ans[i][j]){Min=ans[i][j];}}}cout<<Min*11<<endl;}}
0 0
- hdu Find a way
- hdu Find a way
- HDU:Find a way
- Find a way HDU
- Find a way HDU
- Find a way HDU
- Find a way HDU
- HDU 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 1564 考虑奇偶性的变化
- Scala eclipse 错误 -找不到或无法加载主类
- GitHub NPoco 调用存储过程
- RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
- android:windowSoftInputMode属性使用
- hdu Find a way
- sql学习---datepart函数的使用
- 在masm下编译一个较小的PE文件
- 关于c++对象模型中指出的c++新手容易出现的误解之编译器不同处理
- 如何正确地写出单例模式
- Comparator 与Comparable 异同
- UIKit--UITableView
- JavaScript强化教程——JavaScript 运算符
- Django会话、用户和注册