목차

회사 문화 1

ps
링크acmicpc.net/…
출처BOJ
문제 번호14267
문제명회사 문화 1
레벨골드 4
분류

DFS

시간복잡도O(n+m)
인풋사이즈n<=100,000, m<=100,000
사용한 언어Python
제출기록62880KB / 444ms
최고기록292ms
해결날짜2021/04/30

풀이

코드

"""Solution code for "BOJ 14267. 회사 문화 1".

- Problem link: https://www.acmicpc.net/problem/14267
- Solution link: http://www.teferi.net/ps/problems/boj/14267
"""

import sys
from teflib import tgraph


def main():
    n, m = [int(x) for x in sys.stdin.readline().split()]
    tree = [[] for _ in range(n)]
    bosses = [int(x) for x in sys.stdin.readline().split()]
    for employee, boss in enumerate(bosses):
        if boss != -1:
            tree[boss - 1].append(employee)    
    praises = [0] * n
    for _ in range(m):
        i, w = [int(x) for x in sys.stdin.readline().split()]
        praises[i - 1] += w
        
    stack = []
    for employee in tgraph.dfs(tree, 0, stack=stack):
        if employee != 0:
            boss = stack[-2]
            praises[employee] += praises[boss]            

    print(*praises)
    
    
if __name__ == '__main__':
    main()