結果
問題 | No.1190 Points |
ユーザー | Kude |
提出日時 | 2020-08-28 03:34:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 515 ms / 2,000 ms |
コード長 | 1,131 bytes |
コンパイル時間 | 210 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 115,328 KB |
最終ジャッジ日時 | 2024-11-09 00:59:11 |
合計ジャッジ時間 | 11,312 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 47 ms
52,224 KB |
testcase_01 | AC | 43 ms
52,352 KB |
testcase_02 | AC | 47 ms
52,224 KB |
testcase_03 | AC | 336 ms
100,480 KB |
testcase_04 | AC | 314 ms
95,360 KB |
testcase_05 | AC | 274 ms
98,048 KB |
testcase_06 | AC | 364 ms
103,168 KB |
testcase_07 | AC | 389 ms
109,824 KB |
testcase_08 | AC | 392 ms
115,328 KB |
testcase_09 | AC | 458 ms
110,528 KB |
testcase_10 | AC | 419 ms
115,072 KB |
testcase_11 | AC | 320 ms
99,520 KB |
testcase_12 | AC | 418 ms
112,128 KB |
testcase_13 | AC | 315 ms
96,352 KB |
testcase_14 | AC | 140 ms
89,856 KB |
testcase_15 | AC | 490 ms
109,756 KB |
testcase_16 | AC | 128 ms
78,208 KB |
testcase_17 | AC | 496 ms
111,192 KB |
testcase_18 | AC | 224 ms
86,784 KB |
testcase_19 | AC | 144 ms
97,152 KB |
testcase_20 | AC | 300 ms
92,544 KB |
testcase_21 | AC | 174 ms
83,712 KB |
testcase_22 | AC | 177 ms
98,304 KB |
testcase_23 | AC | 515 ms
111,032 KB |
testcase_24 | AC | 496 ms
110,996 KB |
testcase_25 | AC | 394 ms
107,648 KB |
testcase_26 | AC | 215 ms
88,192 KB |
testcase_27 | AC | 397 ms
107,648 KB |
ソースコード
n, m, p = map(int, input().split()) s, g = map(int, input().split()) s -= 1 g -= 1 to = [[] for _ in range(n)] for _ in range(m): u, v = map(int, input().split()) to[u-1].append(v-1) to[v-1].append(u-1) INF = 10**18 dist_s = [[INF, INF] for _ in range(n)] dist_s[s][0] = 0 q = [s] now = 1 while q: nq = [] for u in q: for v in to[u]: if now < dist_s[v][now&1]: dist_s[v][now&1] = now nq.append(v) q = nq now += 1 dist_g = [[INF, INF] for _ in range(n)] dist_g[g][0] = 0 q = [g] now = 1 while q: nq = [] for u in q: for v in to[u]: if now < dist_g[v][now&1]: dist_g[v][now&1] = now nq.append(v) q = nq now += 1 ans = [] for i in range(n): if p % 2 == 0: ok = dist_s[i][0] + dist_g[i][0] <= p or dist_s[i][1] + dist_g[i][1] <= p else: ok = dist_s[i][0] + dist_g[i][1] <= p or dist_s[i][1] + dist_g[i][0] <= p if ok: ans.append(i+1) if len(ans) == 0: print(-1) else: print(len(ans)) print(*ans, sep='\n') #print(dist_s) #print(dist_g)