Codeforces #325 D. Phillip and Trains (bfs)
2015-10-13 00:50
411 查看
题意:
3∗(N<=100)的网格,有个人要逃跑,他每次先向右移动一格,然后可以上下一格或者不动,然后车移动2格
问能否从右边界逃跑
分析:
bfs就好了,转移就向右,然后上下不动三种,车移动2格,可以根据相对运动,人直接再右移动两格就好了,这两格都要判
代码:
3∗(N<=100)的网格,有个人要逃跑,他每次先向右移动一格,然后可以上下一格或者不动,然后车移动2格
问能否从右边界逃跑
分析:
bfs就好了,转移就向右,然后上下不动三种,车移动2格,可以根据相对运动,人直接再右移动两格就好了,这两格都要判
代码:
// // Created by TaoSama on 2015-10-12 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STACK:1024000000,1024000000") #include <algorithm> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <string> #include <set> #include <vector> using namespace std; #define pr(x) cout << #x << " = " << x << " " #define prln(x) cout << #x << " = " << x << endl const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7; int n, k, sx; char a[5][105]; typedef pair<int, int> P; bool bfs(int sx) { queue<P> q; q.push(P(sx, 1)); while(q.size()) { int x = q.front().first, y = q.front().second; q.pop(); if(isalpha(a[x][++y])) continue; if(y >= n) return true; for(int i = -1; i <= 1; ++i) { int nx = x + i; if(nx < 1 || nx > 3) continue; if(isalpha(a[nx][y]) || isalpha(a[nx][y + 1]) || isalpha(a[nx][y + 2]) || a[nx][y + 2] == 1) continue; int ny = y + 2; // pr(nx); prln(ny); if(ny >= n) return true; a[nx][ny] = 1; q.push(P(nx, ny)); } } return false; } int main() { #ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin); // freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout); #endif ios_base::sync_with_stdio(0); int t; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &k); memset(a, 0, sizeof a); for(int i = 1; i <= 3; ++i) { scanf("%s", a[i] + 1); if(a[i][1] == 's') sx = i; } puts(bfs(sx) ? "YES" : "NO"); } return 0; }
相关文章推荐
- Surrounded Regions
- Word Ladder, Gray Code
- UVA 11624
- HDU1495
- HDU2612 Find a way
- HDU1241 Oil Deposits
- Hdu2444二分图
- 最少步数BFS
- 转v_JULY_v的 BFS和DFS优先搜索算法
- 2015 寒假搜索专题 I - Meteor Shower(BFS)
- Same Tree
- E - Roads in the North
- DFS&BFS算法总结(1)
- Word Ladder I
- 图的BFS和DFS学习笔记
- [LeetCode] Binary Tree Level Order Traversal
- [LeetCode] Binary Tree Level Order Traversal II
- 关于BFS搜索的思想, 最简单的水题,不过深有体会啊。
- Word Ladder II
- Surrounded Regions