結果
| 問題 |
No.2674 k-Walk on Bipartite
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 15:54:24 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,178 bytes |
| コンパイル時間 | 193 ms |
| コンパイル使用メモリ | 81,720 KB |
| 実行使用メモリ | 124,824 KB |
| 最終ジャッジ日時 | 2025-04-16 15:56:44 |
| 合計ジャッジ時間 | 5,444 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 WA * 6 |
ソースコード
import sys
from collections import deque
def main():
input = sys.stdin.read().split()
idx = 0
N = int(input[idx]); idx +=1
M = int(input[idx]); idx +=1
s = int(input[idx]); t = int(input[idx+1]); k = int(input[idx+2]); idx +=3
s -= 1 # converting to 0-based
t -= 1
# Build adjacency list
adj = [[] for _ in range(N)]
for _ in range(M):
a = int(input[idx])-1
b = int(input[idx+1])-1
adj[a].append(b)
adj[b].append(a)
idx +=2
# BFS to find shortest path from s to t
INF = float('inf')
dist = [INF] * N
dist[s] = 0
q = deque([s])
while q:
u = q.popleft()
for v in adj[u]:
if dist[v] == INF:
dist[v] = dist[u] + 1
q.append(v)
if v == t:
q = deque() # early exit
break
if dist[t] == INF:
print("Unknown")
else:
d = dist[t]
if (d % 2) != (k % 2):
print("No")
else:
if d <= k:
print("Yes")
else:
print("Unknown")
if __name__ == "__main__":
main()
lam6er