백준) 17073 나무위의 빗물

박복만·2021년 7월 25일
0

알고리즘_백준

목록 보기
7/7


접근방법

  • 양방향 연결 정보를 가지고있는 트리를 구현하고
  • 리프노드의 개수를 세서 물의양 나누기 리프노드의 수 하면 된다.

코드

import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline

n, w = map(int, input().split())
tree = [[] for _ in range(n+1)]
visit = [0] * (n+1)
for _ in range(n-1):
    a,b = map(int,input().split())
    tree[a].append(b)
    tree[b].append(a)
ans = 0
def dfs(v):

    global ans
    visit[v] += 1
    if (len(tree[v]) == 1) and (visit[tree[v][0]] == 1):
        ans += 1
        return

    for i in tree[v]:
        if visit[i] == 0:
            dfs(i)

dfs(1)
print(w/ans)

챙겨갈점

  • setrecursionlimit(0**9) 잊지말자
profile
병신

0개의 댓글