양갈래 바이러스
시간 제한2초메모리 제한1024 MB
포화 이진 트리의 각 도시에 대해, 거리 d 이내에서 뿌려진 모든 바이러스 위력의 합을 출력한다.
문제
여행을 다니던 무대소녀 나나는 어느 날 갈래 나라를 발견하게 된다. 갈래 나라는 개의 도시로 이루어져 있는데, ()번째 도시와 번째 도시를 잇는 양방향 도로가 존재한다. 이때 를 만족하는 양의 정수 가 존재한다. 즉, 갈래 나라는 포화 이진 트리 구조를 이룬다.
나라의 구조와 이름으로 미루어 보았을 때, 양갈래 머리를 한 사람이 많을 것이라 생각한 나나는, 갈래 나라의 국민들을 보고 충격을 받게 된다. 양갈래 머리를 한 사람이 아무도 없었던 것이다! 아무것도 모르던 시절로 돌아갈 수 없는 가슴을 찌르는 충격을 받은 나나는 무대소녀로서의 본분을 잠시 버리고 양갈래 바이러스 개발에 몰두하여 총 개 종류의 양갈래 바이러스를 제작하는데 성공하였다.
각 바이러스에는 위력 와 전염력 가 존재하는데, 이는 바이러스가 초기에 뿌려진 도시에서 거리가 이하인 도시들은 위력이 인 바이러스에 감염된다는 뜻이다. 도시 에서 도시 까지의 거리는 에서 로 가기 위해 거쳐야 하는 도로 개수의 최솟값으로 정의된다.
도시의 감염도는 나나가 모든 바이러스를 뿌린 후 현재까지 감염된 바이러스 위력의 합으로 정의된다. 하나의 도시는 2종류 이상의 바이러스에 감염될 수 있다.
나나가 모든 바이러스를 다 뿌렸을 때, 각 도시의 감염도를 출력하라.
입력
첫째 줄에 갈래 나라의 도시의 개수 ()과 바이러스의 개수 ()가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에는 바이러스에 대한 정보가 다음과 같이 주어진다.
- : ()번째 도시에 위력이 ()이고 전염력이 ()인 바이러스를 뿌린다.
출력
첫째 줄에 각 도시의 감염도를 의미하는 개의 수를 공백으로 구분하여 출력하라.