結果
| 問題 | 
                            No.1588 Connection
                             | 
                    
| コンテスト | |
| ユーザー | 
                             norioc
                         | 
                    
| 提出日時 | 2021-07-09 01:47:19 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 159 ms / 2,000 ms | 
| コード長 | 794 bytes | 
| コンパイル時間 | 354 ms | 
| コンパイル使用メモリ | 12,544 KB | 
| 実行使用メモリ | 27,992 KB | 
| 平均クエリ数 | 552.31 | 
| 最終ジャッジ日時 | 2024-07-17 12:51:51 | 
| 合計ジャッジ時間 | 4,442 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 31 | 
ソースコード
import collections
N, M = map(int, input().split())
def query(r, c) -> bool:
    print(r, c)
    res = input()
    if res == '-1': exit()
    return res == 'Black'
def calc():
    q = collections.deque()
    q.append((1, 1))
    used = collections.defaultdict(bool)
    m = 0
    while len(q) > 0:
        r, c = q.popleft()
        if used[r, c]: continue
        used[r, c] = True
        if r == N and c == N: return True
        if m == 3000: return False
        black = query(r, c)
        m += 1
        if not black: continue
        for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            if not (1 <= r + dr <= N): continue
            if not (1 <= c + dc <= N): continue
            q.append((r + dr, c + dc))
ans = calc()
if ans:
    print('Yes')
else:
    print('No')
            
            
            
        
            
norioc