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

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

농장 관리

시간 제한1초메모리 제한128 MB

요약
N개 농장으로 이루어진 트리에서 경로의 모든 간선에 1을 더하는 갱신과 경로 위 간선 값의 합을 구하는 질의를 M번 순서대로 처리한다.
난이도

어려움10점 중 8점

유형
트리, 세그먼트 트리, 누적 합, DFS
정답자
아직 제출이 없습니다

문제

NN개의 농장이 있고, 이 농장들을 양방향으로 잇는 N−1N-1개의 도로가 있다. 임의의 두 농장 사이에는 정확히 하나의 경로만 존재한다. 즉, 농장과 도로는 트리를 이룬다. 농장에는 11번부터 NN번까지 번호가 붙어 있다.

재현이는 도로를 따라 나무를 심으려고 한다. 작업은 쿼리로 주어지며, 쿼리는 두 종류이다.

  • P u v: uu번 농장과 vv번 농장을 잇는 경로 위의 모든 도로에 나무를 한 그루씩 심는다.
  • Q u v: uu번 농장과 vv번 농장을 잇는 경로 위의 도로에 심겨 있는 나무의 총 개수를 출력한다.

처음에는 어떤 도로에도 나무가 심겨 있지 않다. 주어지는 쿼리를 순서대로 처리하라.

입력

첫째 줄에 농장의 수 NN과 쿼리의 수 MM이 주어진다. (1≤N,M≤100,0001 \le N, M \le 100{,}000)

이어지는 N−1N-1개의 줄에는 각 도로가 잇는 두 농장의 번호가 한 줄에 하나씩 주어진다.

그다음 MM개의 줄에는 쿼리가 한 줄에 하나씩 주어진다. 각 쿼리는 문자 하나(P 또는 Q)와 두 정수 uu, vv로 이루어지며, 위에서 설명한 형식을 따른다.

출력

각 Q 쿼리마다, 해당 경로 위의 도로에 심겨 있는 나무의 개수를 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    4 6
    1 4
    2 4
    3 4
    P 2 3
    P 1 3
    Q 3 4
    P 1 4
    Q 2 4
    Q 1 4
    
    예상 출력
    2
    1
    2
    
  2. 예제 2

    입력
    1 3
    P 1 1
    Q 1 1
    Q 1 1
    
    예상 출력
    0
    0
    
  3. 예제 3

    입력
    5 6
    1 2
    2 3
    3 4
    4 5
    P 1 5
    P 2 4
    Q 1 5
    Q 2 3
    Q 5 5
    Q 3 5
    
    예상 출력
    6
    2
    0
    3
    
  4. 예제 4

    입력
    5 6
    1 2
    1 3
    1 4
    1 5
    P 2 3
    P 4 5
    P 2 5
    Q 2 3
    Q 4 5
    Q 3 4
    
    예상 출력
    3
    3
    2