아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

균형 잡힌 경로

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

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

어려움10점 중 8점

유형
분할 정복, 해시맵, 누적 합, 트리
정답자
아직 제출이 없습니다

문제

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

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

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

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

입력

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

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

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

출력

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

예제3

  1. 예제 1

    입력
    2
    ()
    1 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    4
    (())
    1 2
    2 3
    3 4
    
    예상 출력
    2
    
  3. 예제 3

    입력
    5
    ()())
    1 2
    2 3
    2 4
    1 5
    
    예상 출력
    4