結果
問題 | No.323 yuki国 |
ユーザー |
![]() |
提出日時 | 2020-06-01 14:30:04 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 323 ms / 5,000 ms |
コード長 | 1,517 bytes |
コンパイル時間 | 1,915 ms |
コンパイル使用メモリ | 174,340 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-21 18:08:09 |
合計ジャッジ時間 | 6,616 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 32 |
ソースコード
/*** @FileName a.cpp* @Author kanpurin* @Created 2020.06.01 14:30:01**/#include "bits/stdc++.h"using namespace std;typedef long long ll;int main() {int h,w;cin >> h >> w;int a,sx,sy;cin >> a >> sx >> sy;int b,gx,gy;cin >> b >> gx >> gy;vector<string> g(h);for (int i = 0; i < h; i++) {cin >> g[i];}const int dx[] = {0,1,0,-1}, dy[] = {1,0,-1,0};int lim = max(a,b)+h*w;vector<vector<vector<bool>>> visited(h,vector<vector<bool>>(w,vector<bool>(lim + 1,false)));queue<tuple<int,int,int>> que;que.push(make_tuple(sx,sy,a));while(!que.empty()) {auto p = que.front(); que.pop();int nx = get<0>(p);int ny = get<1>(p);int sz = get<2>(p);for (int k = 0; k < 4; k++) {int x = nx + dx[k], y = ny + dy[k];if (x >= 0 && x < h && y >= 0 && y < w) {if (g[x][y] == '.') {if (sz-1 >= 1 && !visited[x][y][sz-1]) {visited[x][y][sz-1] = true;que.push(make_tuple(x,y,sz-1));}}else {if (sz+1 <= lim && !visited[x][y][sz+1]) {visited[x][y][sz+1] = true;que.push(make_tuple(x,y,sz+1));}}}}}if (visited[gx][gy][b]) {puts("Yes");}else {puts("No");}return 0;}