만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

UCPC 만들기

시간 제한3초메모리 제한1024 MB

요약
각 정점에 U, C, P가 적힌 트리가 주어질 때, 두 정점 사이 경로의 글자를 재배열해 (UCPC)^k 꼴로 만들 수 있는 쌍 (a, b)의 개수를 센다.
난이도

어려움10점 중 8점

유형
트리, DFS, 조합론, 수학
정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리가 주어진다. 트리의 각 정점에는 1부터 NN까지의 번호가 매겨져 있으며, 알파벳 U, C, P 중 하나가 쓰여 있다. 다음 조건을 만족하는 (a,b)(a, b) 순서쌍의 개수를 구하여라. (1≤a<b≤N)(1 \leq a < b \leq N)

  • 정점 aa에서 정점 bb에 이르는 단순 경로에 포함된 모든 정점에 쓰인 문자들을 모은 뒤 재배열하여 ((UCPC)k)^k 꼴의 문자열을 만들 수 있다. (k≥1k \geq 1)

입력

첫 번째 줄에는 정점의 개수 NN이 주어진다. (1≤N≤200 000)(1 \leq N \leq 200\ 000)

그 다음 줄에는 알파벳 U, C, P로만 이루어진 길이 NN의 문자열 SS가 주어진다.

그 다음 N−1N-1개의 줄에 걸쳐 두 정수 uiu_i와 viv_i가 공백으로 구분되어 주어진다. 이는 트리에서 정점 uiu_i와 정점 viv_i가 직접 연결되어 있음을 의미한다. (1≤ui,vi≤N,ui≠vi)(1 \leq u_i, v_i \leq N, u_i \neq v_i)

출력

조건을 만족하는 (a,b)(a, b) 순서쌍의 개수를 출력한다.

힌트

예제 1에 해당하는 트리는 아래와 같다.

그림 J.1: 예제 1에 해당하는 트리

1번 정점과 4번 정점, 1번 정점과 5번 정점 사이의 경로를 이용하면 k=1k=1 형태의 문자열(UCPC)을 만들 수 있다.

예제 2의 경우, k=1k=1 형태의 문자열(UCPC) 2개, k=2k=2 형태의 문자열(UCPCUCPC) 1개를 만들 수 있다.

예제2

  1. 예제 1

    입력
    5
    UCCPP
    2 3
    4 3
    3 5
    2 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    13
    CUUUCCCCPCCPP
    1 2
    2 3
    4 7
    3 10
    6 2
    7 6
    12 13
    9 7
    7 8
    11 12
    7 11
    5 7
    
    예상 출력
    3