結果
問題 |
No.1244 Black Segment
|
ユーザー |
![]() |
提出日時 | 2025-03-20 21:17:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 213 ms / 2,000 ms |
コード長 | 1,233 bytes |
コンパイル時間 | 176 ms |
コンパイル使用メモリ | 81,908 KB |
実行使用メモリ | 89,516 KB |
最終ジャッジ日時 | 2025-03-20 21:17:58 |
合計ジャッジ時間 | 7,180 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
import sys from collections import deque def main(): n, m, A, B = map(int, sys.stdin.readline().split()) target_start = B + 1 if target_start > n + 1: print(-1) return graph = [[] for _ in range(n + 2)] # Nodes from 1 to n+1 for _ in range(m): L, R = map(int, sys.stdin.readline().split()) a = L b = R + 1 graph[a].append(b) graph[b].append(a) # Initialize distance array and queue distance = [-1] * (n + 2) q = deque() # Add all X in [1, A] as starting points for X in range(1, A + 1): if distance[X] == -1: distance[X] = 0 q.append(X) # BFS to compute shortest paths while q: u = q.popleft() for v in graph[u]: if distance[v] == -1: distance[v] = distance[u] + 1 q.append(v) # Find the minimum distance among nodes >= B+1 min_dist = float('inf') for y_plus_1 in range(target_start, n + 2): if distance[y_plus_1] != -1: if distance[y_plus_1] < min_dist: min_dist = distance[y_plus_1] print(min_dist if min_dist != float('inf') else -1) if __name__ == "__main__": main()