-
알고리즘: 백준 2211번 네트워크 복구 (feat.python)알고리즘/백준(BaekJoon) 2021. 1. 15. 15:29
2211번: 네트워크 복구
첫째 줄에 두 정수 N, M이 주어진다. 다음 M개의 줄에는 회선의 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 컴퓨터와 B번 컴퓨터가 통신 시간이 C (1 ≤ C ≤ 10)인 회선으로 연결되어 있다
www.acmicpc.net
import sys import heapq read = sys.stdin.readline INF = sys.maxsize N, M = map(int, read().split()) net = {i: [] for i in range(1, N+1)} for _ in range(M): A, B, C = map(int, read().split()) net[A].append([C, B]) net[B].append([C, A]) times =[[0, 0]]+ [[INF, 0] for _ in range(N)] times[1] = [0, 0] hq = [] heapq.heappush(hq, [0, 1]) while hq: cw, cn = heapq.heappop(hq) for nw, nn in net[cn]: next_weight = nw + cw if next_weight < times[nn][0]: times[nn] = [next_weight, cn] heapq.heappush(hq, [next_weight, nn]) def find_route(): routes = [] for i in range(2, len(times)): routes.append([i,times[i][1]]) print(len(routes)) for a, b in routes: print(a, b, end='') print() find_route()
반응형'알고리즘 > 백준(BaekJoon)' 카테고리의 다른 글
알고리즘: 백준 3190번 뱀 (feat. python) (0) 2021.01.20 알고리즘: 백준 15686번 치킨 배달 (feat. python) (0) 2021.01.17 알고리즘: 백준 10282번 해킹 (feat. python) (0) 2021.01.15 알고리즘: 백준 11779번 최소비용 구하기2 (feat.python) (0) 2021.01.15 알고리즘: 백준 2665번 미로만들기 (feat.python) (0) 2021.01.13