UVA 2612 Find a way(BFS)
来源:互联网 发布:linux suspend resume 编辑:程序博客网 时间:2024/05/22 11:45
分别计算每个人到每个KCF的最短距离,然后相加求出最短距离
#include<cstdio>#include<queue>#include<cstring>using namespace std;const int maxn=200+10;struct node{int x,y;node(int x=0,int y=0):x(x),y(y){}}ny,nm;char g[maxn][maxn]; //输入路径 int d[maxn][maxn];int dy[maxn][maxn],dm[maxn][maxn]; //Y、M int n,m;int total; //计算出现过几次 @(KCF) int dir[][2]={{1,0},{-1,0},{0,-1},{0,1}};bool isValid(node & nd){return nd.x>=0&&nd.x<m && nd.y>=0&&nd.y<n;}void bfs(node &nd){memset(d,0,sizeof(d));queue<node>q;q.push(nd);while(!q.empty()){node u=q.front();q.pop();if(g[u.y][u.x]=='@'){if(total){if(g[nd.y][nd.x]=='Y')dy[u.y][u.x]=d[u.y][u.x];else dm[u.y][u.x]=d[u.y][u.x];}if(--total==0)return ;}for(int i=0;i<4;i++){node v=node(u.x+dir[i][0],u.y+dir[i][1]);if(isValid(v) && !d[v.y][v.x] && g[v.y][v.x]!='#'){q.push(v);d[v.y][v.x]=d[u.y][u.x]+11;}}}}int main(){while(scanf("%d%d",&n,&m)==2){getchar();total=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%c",&g[i][j]);if(g[i][j]=='Y')ny.y=i,ny.x=j;if(g[i][j]=='M')nm.y=i,nm.x=j;if(g[i][j]=='@')total++;}getchar();}int temp=total; memset(dy,0,sizeof(dy));memset(dm,0,sizeof(dm)); bfs(ny);total=temp;bfs(nm);int min1=1000000;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(g[i][j]=='@' && dy[i][j]!=0&&dm[i][j]!=0) //可能会无法到达KCF min1=min(min1,dy[i][j]+dm[i][j]);}}printf("%d\n",min1); }return 0;}
0 0
- UVA 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)
- hd 2612 Find a way (BFS)
- 【HDU 2612】Find a way(BFS)
- 【HD 2612】Find a way(BFS)
- HDU 2612 Find a way (BFS)
- HDU 2612 Find a way(BFS)
- hdu 2612 Find a way (BFS)
- linux网络编程:使用进程池实现TCP多客户服务
- mongodb和oracle的区别
- hdoj2019
- 2017/2/15
- 扩展欧几里得算法
- UVA 2612 Find a way(BFS)
- img (内联元素) (inline元素) 标签上下左右间隙问题原因及解决方案: 垂直方向间隙和水平方向间隙原因及解决方案:
- hdoj2020
- jquery ajax 使用
- Eclipse导入GitHub项目
- CThread - a Worker Thread wrapper class
- 数组有没有length()方法?String类有没有?
- hdoj2035
- JavaScript面向对象编程基础---封装