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

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

누텔라 트리 (Hard)

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

요약
검은 정점에서 시작해 빨간 정점들로만 이어지는 경로의 개수를 세고, 정점 색을 바꿀 때마다 개수를 다시 구한다.
난이도

보통10점 중 7점

유형
트리, 구현, 수학
정답자
아직 제출이 없습니다

문제

민제는 정점이 NN개인 트리를 가지고 있다. 이 트리의 각 정점은 빨간색 또는 검은색으로 칠해져 있다.

민제는 빨간색과 검은색 정점들로 가득한 이 트리를 보고 누텔라(Nutella)를 떠올렸다. 누텔라는 민제가 가장 좋아하는 초콜릿 잼으로, 로고는 다음과 같이 생겼다. 맨 앞 글자는 검은색, 나머지 글자는 빨간색임에 주목하자.

민제는 트리에서 누텔라 로고를 몇 개나 찾을 수 있을지 궁금해졌다.

다음 조건들을 만족하는 서로 다른 정점들의 열 \[v_1,v_2,⋯!,v_k]\[v\_1, v\_2, \cdots\\!, v\_k]를 누텔라 경로라 정의하자.

  • kk는 22 이상이다.
  • 각 1≤i≤k−11 \le i \le k-1에 대해, v_iv\_i와 v_i+1v\_{i+1}은 트리에서 간선으로 직접 연결되어 있다.
  • v_1v\_1은 검은색이다.
  • 각 2≤i≤k2 \le i \le k에 대해, v_iv\_i는 빨간색이다.

주어진 트리에서 누텔라 경로가 총 몇 개 있는지 구하시오.

단, 민제는 정점 하나를 골라 색을 바꾸는 작업을 총 QQ회 수행할 예정이다. 해당 정점이 검은색이었다면 빨간색으로, 빨간색이었다면 검은색으로 색이 바뀐다. 이 작업을 수행할 때마다 누텔라 경로의 개수를 새로 구해야 한다.

입력

첫째 줄에 트리의 정점의 개수 NN이 주어진다. (2≤N≤100,0002 \le N \le 100\\,000)

둘째 줄부터 (N−1)(N-1)개 줄에 걸쳐 각 간선이 잇는 두 정점의 번호 u_iu\_i, v_iv\_i가 공백을 사이에 두고 주어진다. (1≤u_i≤N1 \le u\_i \le N, 1≤v_i≤N1 \le v\_i \le N, u_i≠v_iu\_i \neq v\_i)

(N+1)(N+1)째 줄에 알파벳 B, R로만 이루어진 길이 NN의 문자열 CC가 주어진다. CC의 ii번째 문자는 ii번 정점의 색을 나타내며, B는 검은색, R는 빨간색을 의미한다.

그 다음 줄에 정점의 색을 바꾸는 횟수 QQ가 주어진다. (1≤Q≤100,0001 \le Q \le 100\\,000)

그 다음 줄부터 QQ개 줄에 걸쳐 색을 바꿀 정점의 번호 q_iq\_i가 주어진다. (1≤q_i≤N1 \le q\_i \le N)

출력

총 (Q+1)(Q+1)개 줄에 걸쳐 정답을 출력한다.

첫째 줄에는 맨 처음 주어진 트리에서의 누텔라 경로의 개수를 출력한다.

(i+1)(i+1)번째 줄에는 색을 바꾸는 작업을 ii회 수행한 이후 누텔라 경로의 개수를 출력한다. (1≤i≤Q1 \le i \le Q)

힌트

예제로 주어진 트리의 초기 상태를 그림으로 나타내면 다음과 같다.

11번 정점의 색을 바꾸면 트리는 다음과 같이 변한다.

예제1

  1. 예제 1

    입력
    6
    1 3
    2 4
    5 3
    4 6
    3 4
    RRBRRB
    4
    1
    3
    2
    1
    
    예상 출력
    6
    5
    8
    9
    8