HDU 2612 Find a way题解
2015-10-23 09:50
344 查看
题目大意:Y和M要去同一个kfc相聚,求最短路径。
分析:简单的bfs,运用两次bfs便可求出。我这里用了两个数组来保存各自到达的时间。上代码
分析:简单的bfs,运用两次bfs便可求出。我这里用了两个数组来保存各自到达的时间。上代码
#include <stdio.h> #include <string.h> struct pep { int x, y; }; const int inf = 0x013f3f33; char map[205][205]; int map1[40050], map2[40050]; int kfc[40050]; int len[40050]; int dx[] = { 0, 0, -1, 1 }; int dy[] = { -1, 1, 0, 0 }; struct pep queue[40050]; bool v[205][205]; int m, n, index; int bfs(int flag) { int front = 0, rear = 1; while (front < rear) { struct pep& p = queue[front]; for (int d = 0; d < 4; d++) { int nx = p.x + dx[d]; int ny = p.y + dy[d]; if (nx >= 0 && nx < m&&ny >= 0 && ny < n) { if (map[nx][ny] != '#'&&!v[nx][ny]) { v[nx][ny] = true; if (map[nx][ny] == '@') { if (flag) map1[nx*m + ny] = len[front] + 1; else map2[nx*m + ny] = len[front] + 1; } queue[rear].x = nx; queue[rear].y = ny; len[rear] = len[front] + 1; rear++; } } } front++; } return 0; } int main() { while (scanf("%d%d", &m, &n) != EOF) { memset(map1, 0, sizeof(map1)); index = 0; for (int i = 0; i < m; i++) scanf("%s", map[i]); int tagi, tagj; memset(v, false, sizeof(v)); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (map[i][j] == '@') { kfc[index] = i*m + j; index++; map1[i*m + j] = inf; map2[i*m + j] = inf; } if (map[i][j] == 'Y') { queue[0].x = i; queue[0].y = j; len[0] = 0; v[i][j] = true; } if (map[i][j] == 'M') { tagi = i; tagj = j; } } } bfs(0); memset(v, false, sizeof(v)); queue[0].x = tagi; queue[0].y = tagj; v[tagi][tagj] = true; bfs(1); int min = inf; for (int i = 0; i < index; i++) { int k = kfc[i]; int sum = map1[k] + map2[k]; if (sum < min) min = sum; } printf("%d\n", min * 11); } return 0; }
相关文章推荐
- 小机更改系统时间
- 资深工程师教你如何在window下快速创建上百个G的打文件!
- AndroidVideoPlayer在线播放视频
- iOS上传错误 ERROR ITMS-90049
- interface Java 中接口
- Java web.xml session-config 属性配置
- fixed定位与absolute定位
- SQL Server 使用全文索引进行页面搜索
- 入学测试题详解
- DOM树
- ZigBee协议栈常用术语汇总
- 关于WIN8.1系统第三方软件找不到映射的网络盘的盘符的解决办法
- 运算符优先级
- 编译opencore-amr for iOS8并支持bitcode
- Mondrian下XMLA方式访问数据页面报错解决方案
- async callback z
- 在自己的网站上实现QQ授权登录
- Eclipse swt开发环境搭建
- GPS接收机的灵敏度分析
- URAL 1018 Binary Apple Tree (树形DP)