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

 

23911번: Beauty of tree

The first line of the input gives the number of test cases, T. T test cases follow. Each test case begins with a line containing the three integers N, A and B. The second line contains N-1 integers. The i-th integer is the parent of node i+1.

www.acmicpc.net

각 지점에서 (A에 의해 방문될 확률)+(B에 의해 방문될 확률)-(두 확률의 곱)의 총합을 구하면 됨을 알 수 있다. (두 사건은 독립이기 때문이다.)

 

A에 의해 방문될 확률은 A가 이 정점을 방문하는 정점을 고르는 확률이므로, 방문 과정에서 이 정점을 방문하게 되는 정점의 개수를 따져 주면 된다. 이는 자기 자신과 자신의 서브트리 중에서 깊이가 a, 2a, .. 차이나는 정점들이다. 차이가 2a나는 것 부터는 차이가 a나는 것에서 카운트한걸 활용할 수 있으므로 DP를 할 수 있다.

이제 이 DP를 업데이트하는 것은 DFS를 돌면서, 조상 정점들을 저장하는 스택을 관리할 것이다. 자신의 서브트리에 대한 업데이트가 끝나면 a번째 조상에 지금 정점의 값을 업데이트해주면 된다. B에 대해서도 똑같이 하면 된다. 

'알고리즘 > 백준' 카테고리의 다른 글

백준 19848 빈 문자열 만들기  (0) 2023.02.25
백준 8225 Tour de Byteotia  (0) 2023.02.16
백준 4792 레드 블루 스패닝 트리  (0) 2023.02.15
백준 15480 LCA와 쿼리  (0) 2023.02.14
백준 1772 정원 정리  (0) 2023.02.09

+ Recent posts