트리 스도쿠
시간 제한1초메모리 제한1024 MB
트리의 각 정점에 A의 원소를 하나씩 서로 다르게 배정해, 인접한 두 정점의 합이 모두 다르도록 만들 수 있는지 판단합니다.
문제
평범한 방식의 스도쿠에 질린 룰루는 새로운 방식의 스도쿠를 제안했다.
- 개의 정점으로 이루어진 트리와 개의 정수로 이루어진 수열 가 주어진다. 수열 의 번째 원소는 이며, 수열 의 원소는 모두 서로 다른 값이다.
- 트리의 모든 정점과 수열의 모든 원소를 일대일로 대응시킨다. 즉, 각 정점은 수열의 원소 하나와 대응되며, 대응되는 원소끼리는 서로 달라야 한다.
- 각 정점은 대응된 원소의 값을 자신의 값으로 정한다. 이때 인접한 모든 두 정점의 값의 합은 서로 달라야 한다. 다시 말해, 트리에서 인접한 어떤 두 정점의 합은 인접한 다른 모든 두 정점의 합과 달라야 한다.
입력
첫 번째 줄에 정수 이 주어진다. ()
두 번째 줄에 수열 이 공백을 사이에 두고 순서대로 주어진다. (, 수열 의 원소는 모두 서로 다른 정수다.)
다음 개의 줄에 트리의 간선이 a b 형식으로 주어진다. 이는 번 정점과 번 정점을 잇는 간선이 있다는 뜻이다. ()
출력
첫 번째 줄에 인접한 두 정점의 값의 합이 모두 다르도록 일대일로 대응시키는 방법이 존재하면 YES, 그렇지 않으면 NO를 출력한다.
방법이 존재하면 다음 줄에 트리의 각 정점과 대응할 수열의 원소 번호를 정점 번호 순서대로 공백을 사이에 두고 출력한다.
가능한 방법이 여러 가지라면 그중 아무거나 출력한다.