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 |