dfs로 통과시키긴 했는데 다른분들 답보니 그냥 w/리프노드의 수
이게 답이더라. 생각해보니 내 답도 결국 (총 물의 양)/(리프노드의 수) 이거였는데..
통과된게 신기할 따름..
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def dfs(cur_node, water):
visited[cur_node] = True
n = len(tree[cur_node])-1
if not n:
ans.append(water)
return
unit = water/n
for next_node in tree[cur_node]:
if not visited[next_node]:
dfs(next_node,unit)
N, W = map(int, input().split())
tree = {i: [] for i in range(1, N+1)}
visited = {i: False for i in range(1, N+1)}
ans = []
for _ in range(N-1):
U, V = map(int, input().split())
tree[U] += [V]
tree[V] += [U]
visited[1] = True
for next_node in tree[1]:
dfs(next_node, W/len(tree[1]))
print(sum(ans)/len(ans))
# 리프노드들에 고인 물의 평균. 노드수 50만.
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 14502 연구소 (0) | 2021.09.19 |
---|---|
[백준][Python] 20056 마법사상어와 파이어볼 : BFS 구현 (0) | 2021.09.18 |
[백준][Python] 16435 스네이크 버드 : 구현 (0) | 2021.09.17 |
[백준][Python] 5582 공통 부분 문자열 : LCS (0) | 2021.09.16 |
[백준][Python] 16208 귀찮음 (0) | 2021.09.16 |