HDU 2612 find a way (kuangbin带你飞 专题一:简单搜索)
2015-01-23 16:13
381 查看
题意:有两个人Y和M,约定好了再kfc碰面,问两个人碰面的最短时间是多少..
先对Y能达到的所有地方bfs一边记录最短路程存起来,在对Mbfs一边,然后对于kfc这个地方把两个人的最短时间加起来找最小就好了....
注意:有些kfc可能无法到达..so....要判断一下
先对Y能达到的所有地方bfs一边记录最短路程存起来,在对Mbfs一边,然后对于kfc这个地方把两个人的最短时间加起来找最小就好了....
注意:有些kfc可能无法到达..so....要判断一下
#include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<queue> #include<iostream> using namespace std; int used[233][233][2];//标记是否经过这个点并且记录是第几个人、时间多少 char map[233][233]; int n,m; struct node { int x,y,t; }; int d[4][2]={1,0,-1,0,0,1,0,-1}; bool ok(int x,int y,int r) { if(x<0||y<0||x>=n||y>=m) return false; if(map[x][y]=='#'||used[x][y][r]!=-1) return false; return true; } void bfs(int x,int y,int r) { queue<node> q; node now,next; now.x=x,now.y=y,now.t=0; used[x][y][r]=0; q.push(now); while(!q.empty()) { now=q.front(); q.pop(); for(int i=0;i<4;i++) { next.x=now.x+d[i][0]; next.y=now.y+d[i][1]; if(ok(next.x,next.y,r)) { next.t=now.t+1; used[next.x][next.y][r]=next.t; q.push(next); } } } } int main() { while(cin>>n>>m) { for(int i=0;i<n;i++) scanf("%s",map[i]); memset(used,-1,sizeof(used)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(map[i][j]=='Y') bfs(i,j,0); else if(map[i][j]=='M') bfs(i,j,1); } } int mini=100000000; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(map[i][j]=='@') { if(mini>used[i][j][0]+used[i][j][1]&&(used[i][j][0]>-1&&used[i][j][1]>-1))//需要判断一下这个kfc能不能走到 mini=used[i][j][0]+used[i][j][1]; } } } cout<<mini*11<<endl; } return 0; }
相关文章推荐
- HDU 2612 Find a way([kuangbin带你飞]专题一 简单搜索)
- [kuangbin带你飞]专题1 简单搜索 N - Find a way HDU - 2612
- [kuangbin带你飞]专题一 简单搜索N - Find a way(HDU 2612)
- HDU - 2612 Find a way(15.10.10 搜索专题)bfs
- [kuangbin带你飞]专题一 简单搜索 N - Find a way
- HDU 2612 find a way(双搜索)BFS
- hdu 2612 Find a way(搜索)
- [kuangbin带你飞]专题一 简单搜索 N - Find a way HDU2612
- [HDU] 2612 Find a way - 用单源最短论经模拟的简单广搜
- hdu 2612(Find a way)(简单广搜)
- [kuangbin]专题一 简单搜索 N - Find a way
- [kuangbin带你飞]专题一 简单搜索 N HDU 2612
- HDU 2612 Find a way 简单BFS
- ACM 搜索 hdu 2612 Find a way
- [kuangbin带你飞]专题一 简单搜索 - N - Find a way
- HDU 1495 非常可乐([kuangbin带你飞]专题一 简单搜索)
- HDU 1241 Oil Deposits ([kuangbin带你飞]专题一 简单搜索)
- HDU 1495 非常可乐 (kuangbin带你飞 专题一:简单搜索)
- HDU-2612 Find a way
- HDU 2612 -Find a way (注意细节的BFS)