양갈래 바이러스
시간 제한2초메모리 제한1024 MB
완전 이진 트리 형태의 도시 N개에서 Q개의 바이러스가 출발 도시로부터 거리 d 이내의 도시에 각각 p만큼 감염 수치를 더할 때, 모든 도시의 최종 감염 수치를 구합니다.
문제
여행을 다니던 무대소녀 나나는 어느 날 갈래 나라를 발견한다. 갈래 나라는 개의 도시로 이루어져 있고, ()번째 도시와 번째 도시를 잇는 양방향 도로가 있다. 을 만족하는 양의 정수 가 존재한다. 즉, 갈래 나라는 포화 이진 트리 구조를 이룬다.
갈래 나라 국민 중에는 양갈래 머리를 한 사람이 한 명도 없었다. 충격을 받은 나나는 무대소녀로서의 일을 잠시 접고 종류의 양갈래 바이러스를 만든다.
각 바이러스에는 위력 와 전염력 가 있다. 도시 에 뿌려진 바이러스는 에서 거리가 이하인 도시를 감염시키며, 감염된 도시는 위력 만큼 감염도가 오른다. 도시 에서 도시 까지의 거리는 에서 로 가는 경로에서 거쳐야 하는 도로 개수의 최솟값이다.
도시의 감염도는 나나가 모든 바이러스를 뿌린 후, 그 도시를 감염시킨 바이러스 위력의 합이다. 한 도시는 두 종류 이상의 바이러스에 감염될 수 있다.
모든 바이러스를 뿌린 뒤 각 도시의 감염도를 출력하라.
입력
첫째 줄에 도시의 개수 ()과 바이러스의 개수 ()가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에는 바이러스 정보가 형식으로 주어진다. 이는 ()번째 도시에 위력 (), 전염력 ()인 바이러스를 뿌린다는 뜻이다.
출력
각 도시의 감염도를 번호 순서대로 공백으로 구분하여 개의 수로 출력하라.