균형 잡힌 경로

트리에서 두 노드 사이 경로의 괄호 문자열이 올바른 괄호 문자열이 되는 순서쌍 개수를 구합니다.

어려움8분할 정복해시맵누적 합트리아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

정점이 nn개인 무방향 트리가 주어진다. 정점 번호는 11번부터 nn번까지다. 각 정점에는 ( 또는 )가 하나씩 적혀 있다. 두 정점 uu, vv에 대해 l[uv]l[u \to v]uu에서 vv로 가는 단순 경로 위의 정점에 적힌 문자를 uu부터 vv까지 순서대로 이어 붙인 문자열이다. 트리에서 두 정점을 잇는 단순 경로는 유일하다.

균형 잡힌 문자열은 다음과 같이 정의한다.

  • 빈 문자열은 균형 잡힌 문자열이다.
  • ss가 균형 잡힌 문자열이면 (, ss, )를 순서대로 이어 붙인 문자열도 균형 잡힌 문자열이다.
  • sstt가 균형 잡힌 문자열이면 둘을 이어 붙인 stst도 균형 잡힌 문자열이다.
  • 그 밖의 문자열은 균형 잡힌 문자열이 아니다.

l[uv]l[u \to v]가 균형 잡힌 문자열인 순서쌍 (u,v)(u, v)의 개수를 구하라.

입력

첫째 줄에 트리의 정점 개수 nn이 주어진다. (2n1000002 \le n \le 100000)

둘째 줄에 길이가 nn인 문자열이 주어진다. 문자열의 각 문자는 ( 또는 )이며, xx번째 문자는 정점 xx에 적힌 문자다.

다음 n1n - 1개 줄에는 두 정수 aia_ibib_i가 주어진다. (1ai,bin1 \le a_i, b_i \le n) 정점 aia_i와 정점 bib_i가 간선으로 이어져 있다는 뜻이다. 주어지는 그래프는 항상 트리다.

출력

l[uv]l[u \to v]가 균형 잡힌 문자열인 순서쌍 (u,v)(u, v)의 개수를 한 줄에 출력한다.