from heapq import heappush, heappop INF = 10 ** 19 def dijkstra(s, N, w): # (始点, ノード数) dist = [INF for _ in range(N)] hq = [(0, s)] dist[s] = 0 seen = [False] * N # ノードが確定済みかどうか while hq: d, v = heappop(hq) # ノードを pop する if seen[v]: continue seen[v] = True for to, cost, width in G[v]: # ノード v に隣接しているノードに対して if width1: mid = (l+r)//2 dist = dijkstra(0, N, mid) if dist[-1]<=X: l = mid else: r = mid print(l)