루트 노드가 많은 트리일수록 좋은 트리이다

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

NN 개의 노드와 N1N-1 개의 간선으로 이루어진 그래프가 있다. 노드는 11번부터 NN번까지 번호가 매겨져 있으며, 각 간선은 방향성을 가지고 있을 수도 있고, 무방향성일 수도 있다. 모든 간선의 방향성을 제거할 경우 이 그래프는 트리가 된다.

어떤 노드에서 다른 모든 노드로 가는 경로가 존재하는 경우 이 노드를 ‘루트 노드’라고 하자. 이 그래프의 ‘좋음’은 루트 노드의 수로 정의한다. 이 때, 다음 쿼리들을 수행하자.

  1. uu와 vv를 잇는 간선을 uvu \rightarrow v의 방향 간선으로 바꾼다.
  2. uu와 vv를 잇는 간선을 uvu \leftarrow v의 방향 간선으로 바꾼다.
  3. uu와 vv를 잇는 간선을 무방향 간선으로 바꾼다.

쿼리의 실행 결과는 그래프에 누적된다.

입력

첫 번째 줄에는 노드의 수 NN이 주어진다.

두 번째 줄부터 N1N-1 개 줄에 걸쳐 간선들에 대한 정보가 주어진다. 간선의 정보는 공백으로 구분된 세 개의 토큰 U_iU\_i, D_iD\_i, V_iV\_i로 주어지며, U_iU\_i와 V_iV\_i는 정점 번호를 의미하는 정수이고 D_iD\_i는 방향을 의미하는 문자열로 -><--- 중 하나이다.

  • D_iD\_i가 ->라면 ii번째 간선은 U_iV_iU\_i \rightarrow V\_i인 방향 간선이다.
  • D_iD\_i가 <-라면 ii번째 간선은 U_iV_iU\_i \leftarrow V\_i인 방향 간선이다.
  • D_iD\_i가 --라면 ii번째 간선은 U_iV_iU\_i \leftrightarrow V\_i인 무방향 간선이다.

다음 줄에는 수행할 쿼리의 수 QQ가 주어진다.

다음 줄부터 QQ 개의 줄의 각 줄마다 쿼리가 순서대로 주어진다. ii 번째 줄에는 세 개의 토큰 u_iu\_i d_id\_i v_iv\_i로 주어지며, u_iu\_i와 v_iv\_i는 정점 번호를 의미하는 정수이고 d_id\_i는 방향을 의미하는 문자열로 -><--- 중 하나이다.

  • d_id\_i가 ->라면 ii번째 간선을 u_iv_iu\_i \rightarrow v\_i인 방향 간선으로 설정한다.
  • d_id\_i가 <-라면 ii번째 간선을 u_iv_iu\_i \leftarrow v\_i인 방향 간선으로 설정한다.
  • d_id\_i가 --라면 ii번째 간선을 u_iv_iu\_i \leftrightarrow v\_i인 무방향 간선으로 설정한다.

출력

쿼리를 수행할 때마다 그래프의 ‘좋음’을 한 줄에 하나씩 출력한다.

제한

  • 2N1052 \le N \le 10^5
  • 1Q1051 \le Q \le 10^5
  • 1U_i,V_iN1 \le U\_i, V\_i \le N (1iN11 \le i \le N-1)
  • U_iV_iU\_i \ne V\_i (1iN11 \le i \le N-1)
  • U_iU\_iV_iV\_i를 모두 무방향 간선으로 이었을 때 만들어지는 그래프는 트리다.
  • 주어진 그래프에 u_iu\_iv_iv\_i를 잇는 간선이 존재한다.