uva 11624 - Fire!(bfs)
来源:互联网 发布:4k电视推荐 知乎 编辑:程序博客网 时间:2024/05/11 14:05
题目链接:uva 11624 - Fire!
先从F开始,做一遍BFS,处理出每个位置着火的时间。再从J开始走,每次只能走到着火时间大于当前时间的点。
<span style="font-size:18px;">#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;const int maxn = 1005;const int inf = 0x3f3f3f3f;const int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};typedef pair<int,int> pii;int N, M, T[maxn][maxn], K[maxn][maxn];char G[maxn][maxn];bool bfs () {int sx, sy;queue<pii> Q;for (int i = 1; i <= N; i++)for (int j = 1; j <= M; j++) {K[i][j] = T[i][j] = inf;if (G[i][j] == 'F') {Q.push(make_pair(i, j));T[i][j] = 0;} else if (G[i][j] == '#')T[i][j] = 0;else if (G[i][j] == 'J')sx = i, sy = j;}while (!Q.empty()) {int x = Q.front().first;int y = Q.front().second;Q.pop();for (int i = 0; i < 4; i++) {int p = x + dir[i][0];int q = y + dir[i][1];if (p <= 0 || p > N || q <= 0 || q > M) continue;if (T[p][q] > T[x][y] + 1) {T[p][q] = T[x][y] + 1;Q.push(make_pair(p, q));}}}/*for (int i = 1; i <= N; i++) {for (int j = 1; j <= M; j++)printf("%d", T[i][j]);printf("\n");}*/K[sx][sy] = 0;Q.push(make_pair(sx, sy));while (!Q.empty()) {int x = Q.front().first;int y = Q.front().second;Q.pop();if (x == 1 || x == N || y == 1 || y == M) {printf("%d\n", K[x][y] + 1);return true;}for (int i = 0; i < 4; i++) {int p = x + dir[i][0];int q = y + dir[i][1];if (p <= 0 || p > N || q <= 0 || q > M) continue;if (min(T[p][q], K[p][q]) > K[x][y] + 1) {K[p][q] = K[x][y] + 1;Q.push(make_pair(p, q));}}}return false;}int main () {int cas;scanf("%d", &cas);while (cas--) {scanf("%d%d", &N, &M);for (int i = 1; i <= N; i++) scanf("%s", G[i]+1);if (!bfs()) printf("IMPOSSIBLE\n");}return 0;}</span>
0 0
- uva 11624 - Fire!(Bfs)
- UVa 11624 Fire!(BFS)
- UVA 11624 - Fire!(BFS)
- uva 11624 Fire!(BFS)
- UVA 11624 Fire!(bfs)
- UVa 11624 Fire!(BFS)
- UVA 11624 Fire! (BFS)
- uva 11624 - Fire!(bfs)
- UVA - 11624 Fire!(BFS)
- UVA 11624 Fire! (BFS)
- UVA 11624 Fire!(bfs)
- UVa 11624 Fire!(BFS)
- 【UVA 11624】Fire!(BFS)
- UVA 11624Fire!(BFS)
- UVa 11624 - Fire!(BFS)
- UVA 11624 Fire!(BFS)
- UVA 11624 BFS Fire
- UVa Fire! 11624 (BFS)
- php判断文件夹是否存在,不存在则创建
- Unity 3D面试题
- 配置jdk环境变量
- 翻滚吧 浏览器
- VC编译器设置
- uva 11624 - Fire!(bfs)
- 利用模板偏特化实现编译期断言
- maven项目管理之-08-依赖冲突
- final、finally、finalize的区别
- php分页类
- PHP大小写是否敏感问题的汇总
- uva 1423 - Guess(拓扑排序)
- deep learning 资料汇总
- vi常用命令