개발자 톡

연습문제 톡 [21년 재직자 대회 본선] 거리 합 구하기

[21년 재직자 대회 본선] 거리 합 구하기

등록일
2022-10-02 00:21:24
조회수
693
작성자
hyunsun

거리 합 구하기 영상 풀이에서 아래의 부분을 다르게 구현했을때

52-2 예제에서만 런타임 에러가 발생하는데요. 어떤 이유에서 발생하는지 궁금합니다.

import sys
sys.setrecursionlimit(10**6)

def dfs1(current, parent):
    subtreeSize[current] = 1
    for child, weight in graph[current]: # 풀이와 다른 부분
        if child != parent:
            dfs1(child, current)
            distSum[current] += distSum[child] + subtreeSize[child] * weight
            subtreeSize[current] += subtreeSize[child]    
    return

def dfs2(current, parent):
    for child, weight in graph[current]: # 풀이와 다른 부분
        if child != parent:
            distSum[child] = distSum[current] + weight * (n - 2*subtreeSize[child])
            dfs2(child, current)
    return

n = int(input())
graph = [[] for _ in range(n+1)]

for i in range(n-1):
    x, y, t = map(int, input().split())
    graph[x].append([y, t])
    graph[y].append([x, t])

subtreeSize = [0]*(n+1)
distSum = [0]*(n+1)

dfs1(1,1)
dfs2(1,1)

for i in range(1, n+1):
    print(distSum[i])
#[21년_재직자_대회_본선]_거리_합_구하기
#21년_재직자_대회_본선
#거리_합_구하기

이 카테고리의 톡 더보기