균형 잡힌 트리

각 정점에 A 또는 B가 적힌 트리에서 같은 글자가 인접하지 않도록 간선을 따라 글자를 맞바꿀 때 최소 교환 횟수를 구하고, 불가능하면 -1을 출력한다.

보통6트리DFS그리디구현아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

트리는 11번부터 nn번까지 번호가 붙은 정점 nn개와 간선 n1n - 1개로 이루어진 구조이며, 두 정점 사이에는 언제나 경로가 하나만 존재한다. 각 정점에는 대문자 A 또는 대문자 B가 정확히 하나씩 적혀 있다.

같은 글자가 적힌 두 정점을 잇는 간선이 하나도 없으면 그 트리는 균형 잡힌 트리다. 여러 단계를 거쳐 트리를 균형 잡힌 상태로 만들 수 있다. 한 단계에서는 간선 하나를 고르고, 그 간선이 잇는 두 정점에 적힌 글자를 서로 바꾼다.

주어진 트리를 균형 잡힌 상태로 만드는 데 필요한 최소 단계 수를 구하시오.

입력

첫째 줄에 트리의 정점 개수 nn (1n3000001 \le n \le 300\,000)이 주어진다.

둘째 줄에 길이가 nn인 문자열이 주어진다. 각 문자는 대문자 A 또는 대문자 B이고, 이 문자열의 jj번째 문자가 정점 jj에 처음 적혀 있는 글자다.

다음 n1n - 1개 줄에는 각각 서로 다른 두 자연수 xxyy (1x,yn1 \le x, y \le n)가 주어진다. 정점 xx와 정점 yy가 간선 하나로 직접 연결되어 있다는 뜻이다. 주어지는 정점과 간선은 문제에서 설명한 트리를 이룬다.

출력

필요한 최소 단계 수를 출력한다. 트리를 균형 잡힌 상태로 만들 수 없으면 -1을 출력한다.

답은 32비트 정수 범위를 벗어날 수 있다.