hdu 2612 简单搜索
2016-02-20 18:02
288 查看
到不了的话,那就无限时间喽
[code]#include<stdio.h> #include<string.h> int n,m; struct node { int x; int y; }Y,M,kfc[40010]; char map[210][210]; int queue[100010]; int way[210][210]; int kfctime[40010]; int move[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; int min(int g,int h) { return g>h?h:g; } void bfs(int x,int y) { int front=0; int end=0; queue[end++]=x; queue[end++]=y; memset(way,-1,sizeof(way)); way[x][y]=0; while(front!=end) { int oldx=queue[front++]; int oldy=queue[front++]; for(int i=0;i<4;i++) { int newx=oldx+move[i][0]; int newy=oldy+move[i][1]; if(newx>=0&&newx<n&&newy>=0&&newy<m&&map[newx][newy]!='#'&&way[newx][newy]==-1) { way[newx][newy]=way[oldx][oldy]+1; queue[end++]=newx; queue[end++]=newy; } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { int cin=0; int i,j; for(i=0;i<n;i++) { scanf("%s",map[i]); for(j=0;j<m;j++) { if(map[i][j]=='Y') { Y.x=i; Y.y=j; } if(map[i][j]=='M') { M.x=i; M.y=j; } if(map[i][j]=='@') { kfc[cin].x=i; kfc[cin].y=j; cin++; } } } bfs(Y.x,Y.y); memset(kfctime,0,sizeof(kfctime)); for(i=0;i<cin;i++) { if(way[kfc[i].x][kfc[i].y]==-1) kfctime[i]=0x3f3f3f3f; else kfctime[i]=way[kfc[i].x][kfc[i].y]; } bfs(M.x,M.y); int ans=0x3f3f3f3f; for(i=0;i<cin;i++) { if(way[kfc[i].x][kfc[i].y]!=-1) { ans=min(ans,kfctime[i]+way[kfc[i].x][kfc[i].y]); } } printf("%d\n",11*ans); } return 0; }
相关文章推荐
- mysql的学习记录
- TCP三次握手和四次挥手详解
- 九度oj_题目1510:替换空格
- 【css】display与position
- Android笔记---TableLayout表格布局
- STM32串口第一个字节丢失问题的分析过程
- TCP协议详解!!!
- 社会化媒体
- 魅族(蓝)手机刷机或更装系统
- visual studio无法单步调试,设置断点出现断点未能绑定
- 9个完整android开源app项目
- 中国计算机学会推荐国际学术期刊
- How to improve Java's I/O performance( 提升 java i/o 性能)
- android-studio 安装使用
- HttpClient工具
- Android笔记---RelativeLayout相对布局
- 【POJ】1751 - Highways(克鲁斯塔尔)(优化)
- 新增一个discuz 独立页面
- Android Fragment 真正的完全解析
- 2、JavaScript常用互动方法