본문 바로가기
문제 해결/BOJ

[백준] 등산 마니아

by 자잘 2023. 4. 30.

https://www.acmicpc.net/problem/20188

 

20188번: 등산 마니아

동네 뒷 산에는 등산로가 있다. 등산로는 N개의 작은 오두막들이 N −1개의 오솔길로 이어진 형태이다. 한 오솔길은 두 개의 오두막을 양 방향으로 연결한다. 한 오솔길의 길이는 1이다. 어떤 오

www.acmicpc.net

import sys, math
from collections import deque, defaultdict

sys.setrecursionlimit(10 ** 8)

#sys.stdin = open("input.txt", "r")
input = sys.stdin.readline

n = int(input())

dp = [0] * (n + 1)

graph = defaultdict(list)

for _ in range(n - 1):
    a, b = tuple(map(int, input().split()))
    graph[a].append(b)
    graph[b].append(a)

ans = 0


def dfs(cur, parent):
    global ans

    for child in graph[cur]:
        if child != parent:
            dfs(child, cur)
            dp[cur] += dp[child] + 1

    val = (dp[cur] + 1) * (n - dp[cur] - 1) + (dp[cur] * (dp[cur] + 1) // 2)

    if cur != 1:
        ans += val


dfs(1, 0)

print(ans)

 

 

'문제 해결 > BOJ' 카테고리의 다른 글

[백준] 배열 돌리기 4  (0) 2023.05.02
[백준] 소용돌이 예쁘게 출력하기  (0) 2023.05.01
[백준] 무기공학  (0) 2023.04.29
[백준] 프렉탈 평면  (0) 2023.04.27
[백준] 파티  (0) 2023.04.26