結果
問題 | No.1190 Points |
ユーザー | McGregorsh |
提出日時 | 2023-07-13 23:44:59 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 650 ms / 2,000 ms |
コード長 | 2,484 bytes |
コンパイル時間 | 289 ms |
コンパイル使用メモリ | 86,940 KB |
実行使用メモリ | 134,636 KB |
最終ジャッジ日時 | 2023-10-13 12:20:14 |
合計ジャッジ時間 | 15,319 ms |
ジャッジサーバーID (参考情報) |
judge12 / judge14 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 233 ms
89,904 KB |
testcase_01 | AC | 228 ms
89,748 KB |
testcase_02 | AC | 233 ms
89,832 KB |
testcase_03 | AC | 538 ms
117,252 KB |
testcase_04 | AC | 447 ms
110,604 KB |
testcase_05 | AC | 438 ms
116,360 KB |
testcase_06 | AC | 530 ms
118,864 KB |
testcase_07 | AC | 561 ms
128,092 KB |
testcase_08 | AC | 504 ms
134,636 KB |
testcase_09 | AC | 542 ms
129,532 KB |
testcase_10 | AC | 508 ms
133,724 KB |
testcase_11 | AC | 468 ms
119,560 KB |
testcase_12 | AC | 529 ms
130,016 KB |
testcase_13 | AC | 488 ms
115,020 KB |
testcase_14 | AC | 296 ms
102,636 KB |
testcase_15 | AC | 641 ms
130,040 KB |
testcase_16 | AC | 294 ms
96,076 KB |
testcase_17 | AC | 605 ms
127,168 KB |
testcase_18 | AC | 405 ms
104,568 KB |
testcase_19 | AC | 299 ms
106,420 KB |
testcase_20 | AC | 466 ms
110,676 KB |
testcase_21 | AC | 349 ms
103,352 KB |
testcase_22 | AC | 330 ms
111,620 KB |
testcase_23 | AC | 650 ms
130,804 KB |
testcase_24 | AC | 623 ms
130,748 KB |
testcase_25 | AC | 530 ms
119,924 KB |
testcase_26 | AC | 419 ms
117,460 KB |
testcase_27 | AC | 520 ms
119,652 KB |
ソースコード
import sys from sys import stdin from fractions import Fraction import math from math import ceil, floor, sqrt, pi, factorial, gcd from copy import deepcopy from collections import Counter, deque, defaultdict from heapq import heapify, heappop, heappush from itertools import accumulate, product, combinations, combinations_with_replacement, permutations from bisect import bisect, bisect_left, bisect_right from functools import reduce, lru_cache from decimal import Decimal, getcontext, ROUND_HALF_UP def i_input(): return int(stdin.readline()) def i_map(): return map(int, stdin.readline().split()) def i_list(): return list(i_map()) def s_input(): return stdin.readline()[:-1] def s_map(): return s_input().split() def s_list(): return list(s_map()) def lcm(a, b): return a * b // gcd(a, b) def get_distance(x1, y1, x2, y2): d = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) return d def rotate(table): n_fild = [] for x in zip(*table[::-1]): n_fild.append(x) return n_fild sys.setrecursionlimit(10 ** 7) INF = float('inf') MOD = 10 ** 9 + 7 MOD2 = 998244353 alpa = 'abcdefghijklmnopqrstuvwxyz' ALPA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' def main(): N, M, P = i_map() S, G = i_map() S -= 1 G -= 1 nums = [[] for i in range(N*2)] for i in range(M): a, b = i_map() a -= 1 b -= 1 nums[a].append(N+b) nums[b].append(N+a) nums[N+a].append(b) nums[N+b].append(a) Sscore = [INF] * (N*2) Sscore[S] = 0 que = deque() que.append(S) while que: p = que.popleft() for nxt in nums[p]: if Sscore[nxt] == INF: Sscore[nxt] = Sscore[p] + 1 que.append(nxt) Gscore = [INF] * (N*2) Gscore[G] = 0 gque = deque() gque.append(G) while gque: p = gque.popleft() for nxt in nums[p]: if Gscore[nxt] == INF: Gscore[nxt] = Gscore[p] + 1 gque.append(nxt) ans = set() for i in range(N): a = Sscore[i] b = Sscore[i+N] c = Gscore[i] d = Gscore[i+N] if P % 2 == 0: if (a+c) <= P: ans.add(i+1) if (b+d) <= P: ans.add(i+1) else: if (a+d)<= P: ans.add(i+1) if (b+c) <= P: ans.add(i+1) ans = list(ans) if len(ans) == 0: print(-1) exit() print(len(ans)) ans.sort() for i in ans: print(i) if __name__ == '__main__': main()