개발자 톡
연습문제 톡
[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년_재직자_대회_본선
#거리_합_구하기