結果
問題 | No.424 立体迷路 |
ユーザー |
![]() |
提出日時 | 2016-09-23 05:32:01 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 2,402 bytes |
コンパイル時間 | 1,963 ms |
コンパイル使用メモリ | 178,824 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-05 07:07:39 |
合計ジャッジ時間 | 2,583 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ull = unsigned long long;using ll = long long;using lli = long long int;using ld = long double;using pa = pair<int, int>;using ppa = pair<pa, int>;#define SORT(v, n) sort(v, v + n);#define ALL(v) v.begin(), v.end()#define VSORT(v) sort(ALL(v))#define GRESORT(v) sort(ALL(v), greater<ll>())#define REVERSE(v) reverse(ALL(v))#define overlap(v) v.erase(unique(ALL(v)), v.end())#define debug(x) cout << #x << ": " << x << endl#define FOR(i, a, b) for (int i = (a); i < (b); i++)#define rep(i, n) FOR(i, 0, n)#define RFOR(i, a, b) for (int i = (b - 1); i >= a; i--)#define rrep(i, n) RFOR(i, 0, n)#define INF INT_MAX#define SUP INT_MIN#define mins(a, b) a = min(a, b)#define maxs(a, b) a = max(a, b)// 4近傍int dy[]={0, 1, 0, -1};int dx[]={1, 0, -1, 0};// 8近傍// int dy[]={0,0,1,-1,1,1,-1,-1};// int dx[]={1,-1,0,0,1,-1,1,-1};// const ll MOD = 1000000007;ll pow_mod(ll a, ll b, ll mod) {ll tmp = 1;a %= mod;if (b > 0) {tmp = pow_mod(a, b / 2, mod);if (b % 2)tmp = (((tmp * tmp) % mod) * a) % mod;elsetmp = (tmp * tmp) % mod;}return tmp;}void solve() {int h,w; cin >> h >> w;int sx,sy,gx,gy; cin >> sy >> sx >> gy >> gx;sx--; sy--; gx--; gy--;vector<vector<int>> d(h,vector<int>(w));vector<string> s(h); rep(i,h) cin >> s[i];queue<pa> q;q.push(pa(sx,sy));d[sy][sx] = 1;while(!q.empty()){pa p = q.front(); q.pop();int x = p.first, y = p.second;if(x == gx && y == gy) break;rep(i,4){int xx = x + dx[i];int yy = y + dy[i];if(xx < 0 || yy < 0 || xx >= w || yy >= h) continue;if(abs(s[yy][xx] - s[y][x]) <= 1 && d[yy][xx] == 0){q.push(pa(xx,yy));d[yy][xx] = 1;}if(s[y][x] > s[yy][xx]){xx += dx[i];yy += dy[i];if(xx < 0 || yy < 0 || xx >= w || yy >= h) continue;if(s[y][x] == s[yy][xx] && d[yy][xx] == 0){q.push(pa(xx,yy));d[yy][xx] = 1;}}}}cout << (d[gy][gx] ? "YES" : "NO") << endl;}int main() {std::ios::sync_with_stdio(false);std::cin.tie(0);solve();return 0;}