최강 테토 뚱뽭

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

요약
정점 u에서 시작해 자식 방향으로 말단까지 이동하며 만든 괄호열이 올바른 괄호 문자열이 되는 u의 개수를 센다.
난이도

어려움10점 중 8점

유형
트리, DFS, 동적 계획법, 스택
정답자
아직 제출이 없습니다

문제

뚱뽭은 트리 나라에 사는 정점의 개수가 NN이고 루트가 11번 정점인 트리다. 정점의 번호는 11번부터 NN번까지이고, 각 정점 uu에는 여는 괄호 ( 또는 닫는 괄호 ) 중 하나가 배정되어 있다.

트리 나라에는 테토 정점과 테토 수치를 다음과 같이 정의한다.

정점 uu를 시작으로 말단 정점까지 자식 방향으로 이동하며 방문하는 자식 정점의 괄호를 uu의 괄호 뒤에 방문한 정점 순서대로 이어붙일 때, 올바른 괄호 문자열이 만들어질 수 있는 경우가 있으면 정점 uu는 테토 정점이라고 한다. 그리고 트리의 테토 정점의 수를 테토 수치라고 한다.

뚱뽭은 자신을 에겐이라고 하는 주변 친구들에게 최강 테토임을 증명하고 싶어 자신의 테토 수치를 보여주려 한다. 뚱뽭의 트리 구조가 주어질 때, 뚱뽭의 테토 수치를 구해보자.

입력

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

두 번째 줄에 정점 NN개의 괄호 정보가 공백으로 구분되어 정점의 번호 순서대로 주어진다. 여는 괄호 (는 00, 닫는 괄호 )는 11로 주어진다.

세 번째 줄부터 N−1N-1개의 줄에 트리의 간선 정보 u,vu, v가 공백으로 구분되어 주어진다. 이는 두 정점 u,vu,v가 간선으로 연결되어 있음을 의미한다. u,vu,v는 정수이고 같은 간선 정보는 주어지지 않는다. (1≤u,v≤N;(1 \le u,v \le N; u≠v)u \neq v)

입력으로 주어지는 모든 수는 정수이고, 입력으로 주어지는 트리는 항상 올바른 트리임이 보장된다.

출력

첫 번째 줄에 테토 수치를 출력한다.

힌트

올바른 괄호 문자열은 다음과 같이 정의한다.

  • 빈 문자열은 올바른 괄호 문자열이다.
  • S가 올바른 괄호 문자열일 때, (S)도 올바른 괄호 문자열이다.
  • S와 T가 올바른 괄호 문자열이라면, ST도 올바른 괄호 문자열이다.

예제1

  1. 예제 1

    입력
    10
    0 0 1 1 0 1 1 0 0 0
    1 2
    2 3
    3 4
    3 5
    2 6
    1 7
    7 8
    8 9
    7 10
    
    예상 출력
    2