백준 12784번 - 인하니카 공화국

born_a·2022년 10월 11일
0

import sys,math
from queue import PriorityQueue

input=sys.stdin.readline
inf=math.inf

#테스트 케이스
t=input()
t = int(t)

def dfs(x,y):
    global uy,ry
    #print("#",x)
    uy[x]=1
    if st[x]==1 and x!=1:return inf
    k=0
    for next in graph[x]:
        if next[0]!=y:
            if uy[next[0]]==0:
                zv=dfs(next[0],x)
                k+=min(zv,next[1])
    ry[x]=k
    return k

for _ in range(t):
    #섬의 수, 다리 수
    a,b=map(int,input().split())
    #0이 1개 들어있는 리스트 [0]에 (a+1)를 곱하면 [0, 0,..]이 됨
    #0이 a+1개
    #섬 노드들
    st=[0]*(a+1)
    uy=[0]*(a+1)
    #비용
    ry=[-inf]*(a+1)
    #a+1개 만큼의 공간을 만들어서 graph[n]이 n번 정점을 나타내도록 함.
    graph=[[]for i in range(a+1)]
    #다리 수 만큼 for문
    for i in range(b):
        y=list(map(int,input().split()))
        st[y[0]]+=1
        st[y[1]]+=1
        graph[y[0]].append([y[1],y[2]])
        graph[y[1]].append([y[0],y[2]])
    print(dfs(1,1))

코드 참고
https://joseph0528.tistory.com/64

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

와 내블로그다~
많은 관심부탁드립니다~

답글 달기