백준 1939(파이썬) - 중량제한

resilient

·

2021. 4. 5. 18:05

728x90
반응형

www.acmicpc.net/problem/1939

 

1939번: 중량제한

첫째 줄에 N, M(1≤M≤100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1≤A, B≤N), C(1≤C≤1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 C인 다리

www.acmicpc.net

import sys
input = sys.stdin.readline
from heapq import heappop,heappush
from collections import deque

n,m = map(int,input().split())

graph = [[] for _ in range(n+1)]
for i in range(m):
    a,b,cost = map(int,input().split())
    graph[a].append([b,cost])
    graph[b].append([a,cost])
start,end = map(int,input().split())

MIN,MAX = 1,1000000000

def bfs(weight):
    queue = deque()
    queue.append(start)
    visited[start] = True
    while queue:
        a = queue.popleft()
        for x,y in graph[a]:
            if not visited[x] and y >=weight:
                visited[x] = True
                queue.append(x)
    if visited[end]==True:
        return True
    else:
        return False    


ans = 0
while MIN<=MAX:
    visited = [False] * (n+1)
    mid = (MIN+MAX)//2
    if bfs(mid):
        ans = mid
        MIN = mid + 1
    else:
        MAX = mid -1
print(ans)
반응형