結果
| 問題 |
No.1588 Connection
|
| コンテスト | |
| ユーザー |
tnakao0123
|
| 提出日時 | 2021-07-11 12:45:31 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 104 ms / 2,000 ms |
| コード長 | 1,600 bytes |
| コンパイル時間 | 909 ms |
| コンパイル使用メモリ | 100,524 KB |
| 実行使用メモリ | 25,220 KB |
| 平均クエリ数 | 551.41 |
| 最終ジャッジ日時 | 2024-07-17 12:59:27 |
| 合計ジャッジ時間 | 4,286 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 31 |
ソースコード
/* -*- coding: utf-8 -*-
*
* 1588.cc: No.1588 Connection - yukicoder
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
using namespace std;
/* constant */
const int MAX_N = 500;
const int dxs[] = { 1, 0, -1, 0 }, dys[] = { 0, -1, 0, 1 };
enum { W = 0, B = 1 };
/* typedef */
typedef pair<int,int> pii;
typedef queue<pii> qpii;
/* global variables */
int ds[MAX_N][MAX_N];
/* subroutines */
int check(int y, int x, int n) {
if (y == n - 1 && x == n - 1) ds[y][x] = B;
if (ds[y][x] >= 0) return ds[y][x];
printf("%d %d\n", y + 1, x + 1); fflush(stdout);
char s[8];
scanf("%s", s);
if (s[0] == 'W') return (ds[y][x] = W);
if (s[0] == 'B') return (ds[y][x] = B);
return -1;
}
/* main */
int main() {
int n, m;
scanf("%d%d", &n, &m);
memset(ds, -1, sizeof(ds));
ds[0][0] = B;
qpii q;
q.push(pii(0, 0));
while (! q.empty()) {
pii u = q.front(); q.pop();
int uy = u.first, ux = u.second;
if (uy == n - 1 && ux == n - 1) {
puts("Yes"); fflush(stdout);
return 0;
}
for (int di = 0; di < 4; di++) {
int vy = uy + dys[di], vx = ux + dxs[di];
if (vy >= 0 && vy < n && vx >= 0 && vx < n && ds[vy][vx] < 0) {
int f = check(vy, vx, n);
if (f < 0) return 0;
if (f == B) q.push(pii(vy, vx));
}
}
}
puts("No"); fflush(stdout);
return 0;
}
tnakao0123