서로 다른 색으로 트리의 경로를 M번 칠한 뒤의 최종 색이 주어질 때, 각 색이 덮는 최단 경로의 양 끝과 함께 규칙에 맞는 유일한 갱신 순서를 복원한다.
어려움8트리DFS그리디정렬아직 제출이 없습니다시간 제한0.7초메모리 제한512 MB산타에게 크리스마스 트리가 있다. 여기서 크리스마스 트리는 노드가 N개인 트리이고, 각 노드에는 색이 하나씩 칠해져 있다. 처음에는 모든 노드의 색이 0이다.
어느 날 밤, 요정 하나가 트리가 밋밋하다고 생각해 M번의 갱신으로 트리를 새로 칠했다. X번째 갱신에서 요정은 X번 선물을 (물론 남의 선물이다) 열어 그 안에서 삼중항 (C,A,B)를 찾는다. 그리고 노드 A와 노드 B를 잇는 경로 위의 모든 노드를 색 C로 칠한다. 선물마다 색이 다르므로 M개의 색은 1부터 M까지의 서로 다른 값이다. 이미 칠해진 노드는 새 색으로 덮여 칠해지고, 이전 색은 영영 사라진다.
삼중항은 남아 있지 않다. 남은 것은 마지막 트리뿐이어서, M번의 갱신이 모두 끝난 뒤의 각 노드 색만 주어진다. 빈 트리를 주어진 트리로 만드는 삼중항 M개를 순서대로 복원하라.
첫째 줄에 N과 M이 주어진다.
둘째 줄에 1 이상 M 이하의 정수 N개가 주어진다. 그중 X번째 값은 노드 X의 색이다.
다음 N−1개의 줄에는 두 정수 A와 B가 주어지며, 노드 A와 노드 B가 간선으로 이어져 있다는 뜻이다.
입력은 다음 제한을 만족한다.
M개의 줄을 출력한다. X번째 줄에는 X번 선물에 들어 있던 삼중항 (C,A,B)를 출력한다. 요정은 출력한 순서대로 칠하므로 순서가 중요하다.
같은 트리를 만드는 선물 순서가 여러 가지일 수 있으므로, 아래 규칙이 정하는 하나만 출력한다.
C a b 꼴로 출력하며, a는 PC의 두 끝 노드 중 작은 쪽, b는 큰 쪽이다. PC가 노드 하나면 a와 b 모두 그 노드다.C 1 1로 출력한다.