結果
問題 | No.1588 Connection |
ユーザー |
![]() |
提出日時 | 2021-07-09 10:56:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
QLE
(最初)
|
実行時間 | - |
コード長 | 2,121 bytes |
コンパイル時間 | 2,414 ms |
コンパイル使用メモリ | 204,484 KB |
最終ジャッジ日時 | 2025-01-22 20:03:26 |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 1 |
other | AC * 23 WA * 8 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;#define rep(i, n) for (int i=0; i<(int)(n); ++(i))#define rep3(i, m, n) for (int i=(m); (i)<(int)(n); ++(i))#define repr(i, n) for (int i=(int)(n)-1; (i)>=0; --(i))#define rep3r(i, m, n) for (int i=(int)(n)-1; (i)>=(int)(m); --(i))#define all(x) (x).begin(), (x).end()const int INF = (int)(1e9);int query(int a, int b, int qcnt) {if (qcnt >= 1500) {exit(0);return -1;}++a; ++b;cout << a << ' ' << b << endl;string s;cin >> s;if (s == "Black") return 1;else if (s == "White") return 0;else if (s == "-1") return -1;else return -1;}int main() {int n, m;cin >> n >> m;cin.ignore();vector<vector<int>> b(n, vector<int>(n, -1));b[0][0] = b[n-1][n-1] = 1;queue<pair<int, int>> que;vector<vector<int>> dist(n, vector<int>(n, INF));int mcnt = 2, qcnt = 0;bool ok = false;que.emplace(0, 0);dist[0][0] = 0;while (!que.empty()) {auto p = que.front(); que.pop();int y = p.first, x = p.second, d = dist[y][x];const vector<int> dy = { -1, 0, 1, 0 }, dx = { 0, 1, 0, -1 };rep(i1, 4) {int ny = y + dy[i1], nx = x + dx[i1];if (ny<0 || ny>=n || nx<0 || nx>=n) continue;if (ny==n-1 && nx==n-1) {ok = true;break;}if (dist[ny][nx] <= d+1) continue;if (b[ny][nx] == -1) {if (mcnt >= m) break;if (qcnt >= 1499) break;int qres = query(ny, nx, qcnt);++qcnt;if (qres == -1) { qcnt = 1500; exit(0); break; }if (qres == 1) ++mcnt;b[ny][nx] = qres;}if (b[ny][nx] == 0) continue;if (b[ny][nx] == 1) {que.emplace(ny, nx);dist[ny][nx] = d + 1;}}if (ok || mcnt>=m || qcnt>=1499) break;}if (ok) cout << "Yes" << endl;else cout << "No" << endl;return 0;}