HDU 2612 Find a way
2016-02-25 23:55
302 查看
感觉还是不熟,忙了好久。
#include<stdio.h> #include<string.h> int n,m; char map[205][205]; int a[205][205],b[205][205]; int book[205][205]; int x1,y1,x2,y2; struct note { int x,y; int s; }que[100000]; int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; void bfs(int sx,int sy) { int head=1,tail=1; que[tail].x=sx; que[tail].y=sy; tail++; book[sx][sy]=1; int flag; while(head<tail) { int tx,ty; int i,j; for(i=0;i<4;i++) { tx=que[head].x+next[i][0]; ty=que[head].y+next[i][1]; if(tx<0||ty<0||tx>=n||ty>=m||map[tx][ty]=='#'||book[tx][ty]) continue; que[tail].x=tx; que[tail].y=ty; que[tail].s=que[head].s+1; book[tx][ty]=1; if(map[tx][ty]=='@') { a[tx][ty]+=que[tail].s; } tail++; } head++; } return; } void bfs2(int sx,int sy) { int head=1,tail=1; que[tail].x=sx; que[tail].y=sy; tail++; book[sx][sy]=1; int flag; while(head<tail) { int tx,ty; int i,j; for(i=0;i<4;i++) { tx=que[head].x+next[i][0]; ty=que[head].y+next[i][1]; if(tx<0||ty<0||tx>=n||ty>=m||map[tx][ty]=='#'||book[tx][ty]) continue; que[tail].x=tx; que[tail].y=ty; que[tail].s=que[head].s+1; book[tx][ty]=1; if(map[tx][ty]=='@') { b[tx][ty]+=que[tail].s; } tail++; } head++; } return; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(map,'\0',sizeof(map)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(book,0,sizeof(book)); int i,j; for(i=0;i<n;i++) { scanf("%s",map[i]); for(j=0;j<m;j++) { if(map[i][j]=='Y') x1=i,y1=j; if(map[i][j]=='M') x2=i,y2=j; } } bfs(x1,y1); memset(que,0,sizeof(que)); memset(book,0,sizeof(book)); bfs2(x2,y2); int min=999999; for(i=0;i<=n;i++) for(j=0;j<m;j++) if(a[i][j]&&b[i][j]&&(a[i][j]+b[i][j])<min) min=a[i][j]+b[i][j]; printf("%d\n",min*11); } return 0; }
相关文章推荐
- 【hdu2614】Beat——dfs
- docker入门
- 策略模式
- UVA 1262(p323p)----Password
- linux静态库查看方法
- leetcode-145-Binary Tree Postorder Traversal
- go语言指针访问结构体的方法
- UGUI逐帧动画
- UVA 1220(p282)----Party at Hali-Bula
- 2016/2/25 onchange 应用
- 对于灰度图像中同一个像素,MATLAB和Photoshop的灰度值不同
- NIST and Quantum Computers
- jQuery源码分析系列
- SQL Server 之 Merge 与 using
- 使用canvas.clipPath来裁剪时部分机型出现问题
- Android之SurfaceView学习(一)
- leetcode-144-Binary Tree Preorder Traversal
- Dandelion - Eclipse Lisp Plugin
- Java连接Redis
- linux(ubuntu)2台互相ssh无密码访问