結果
| 問題 |
No.1190 Points
|
| コンテスト | |
| ユーザー |
ayaoni
|
| 提出日時 | 2020-12-11 12:43:23 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,033 ms / 2,000 ms |
| コード長 | 1,740 bytes |
| コンパイル時間 | 1,086 ms |
| コンパイル使用メモリ | 81,792 KB |
| 実行使用メモリ | 144,512 KB |
| 最終ジャッジ日時 | 2025-01-18 23:32:16 |
| 合計ジャッジ時間 | 18,455 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 25 |
ソースコード
import sys,collections,heapq
from collections import deque
sys.setrecursionlimit(10**7)
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def LI2(): return list(map(int,sys.stdin.readline().rstrip()))
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())
def LS2(): return list(sys.stdin.readline().rstrip())
N,M,P = MI()
S,G = MI()
Graph = [[[] for _ in range(2)] for _ in range(N+1)]
for _ in range(M):
u,v = MI()
Graph[u][0].append((v,1))
Graph[v][0].append((u,1))
Graph[u][1].append((v,0))
Graph[v][1].append((u,0))
inf = 10**18
dist_S = [[inf]*2 for _ in range(N+1)]
dist_G = [[inf]*2 for _ in range(N+1)]
dist_S[S][0] = 0
dist_G[G][0] = 0
deq_S = deque([(S,0)])
deq_G = deque([(G,0)])
while deq_S:
u,r = deq_S.pop()
for v,s in Graph[u][r]:
if dist_S[v][s] == inf:
dist_S[v][s] = dist_S[u][r]+1
deq_S.appendleft((v,s))
while deq_G:
u,r = deq_G.pop()
for v,s in Graph[u][r]:
if dist_G[v][s] == inf:
dist_G[v][s] = dist_G[u][r]+1
deq_G.appendleft((v,s))
ANS = []
for i in range(1,N+1):
if P % 2 == 0:
d0 = dist_S[i][0]+dist_G[i][0]
d1 = dist_S[i][1]+dist_G[i][1]
if (d0 != inf and d0 <= P) or (d1 != inf and d1 <= P):
ANS.append(i)
else:
d0 = dist_S[i][0]+dist_G[i][1]
d1 = dist_S[i][1]+dist_G[i][0]
if (d0 != inf and d0 <= P) or (d1 != inf and d1 <= P):
ANS.append(i)
if ANS:
print(len(ANS))
print(*ANS,sep='\n')
else:
print(-1)
# DijkstraだとTLE
ayaoni