結果
| 問題 |
No.1190 Points
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 21:43:43 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,794 bytes |
| コンパイル時間 | 177 ms |
| コンパイル使用メモリ | 81,860 KB |
| 実行使用メモリ | 107,616 KB |
| 最終ジャッジ日時 | 2025-04-15 21:45:21 |
| 合計ジャッジ時間 | 4,768 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 WA * 12 |
ソースコード
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
P = int(input[idx]); idx += 1
S = int(input[idx]) - 1 # Convert to 0-based index
idx += 1
G = int(input[idx]) - 1 # Convert to 0-based index
idx += 1
# Build adjacency list
adj = [[] for _ in range(N)]
for _ in range(M):
u = int(input[idx]) - 1
idx += 1
v = int(input[idx]) - 1
idx += 1
adj[u].append(v)
adj[v].append(u)
# BFS from S to compute d_s (distance from S)
d_s = [-1] * N
q = deque([S])
d_s[S] = 0
while q:
u = q.popleft()
for v in adj[u]:
if d_s[v] == -1:
d_s[v] = d_s[u] + 1
q.append(v)
# BFS from G to compute d_g (distance from G)
d_g = [-1] * N
q = deque([G])
d_g[G] = 0
while q:
u = q.popleft()
for v in adj[u]:
if d_g[v] == -1:
d_g[v] = d_g[u] + 1
q.append(v)
# Check if S and G are connected
if d_s[G] == -1 or d_g[S] == -1:
print(-1)
return
d = d_s[G]
if P < d or (P - d) % 2 != 0:
print(-1)
return
# Collect all valid vertices
valid_vertices = []
for u in range(N):
if d_s[u] == -1 or d_g[u] == -1:
continue
total = d_s[u] + d_g[u]
if total <= P and (P - total) % 2 == 0:
valid_vertices.append(u + 1) # Convert back to 1-based index
if not valid_vertices:
print(-1)
else:
valid_vertices.sort()
print(len(valid_vertices))
for v in valid_vertices:
print(v)
if __name__ == "__main__":
main()
lam6er