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

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

개미 군집

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

요약
트리에서 정점의 색을 바꾸는 명령과 경로 질의가 주어질 때, A와 B 사이 경로에 있는 같은 색 정점 두 개의 최소 거리를 구합니다.
난이도

어려움10점 중 8점

유형
트리, 세그먼트 트리, 해시맵
정답자
아직 제출이 없습니다

문제

여러 개미 군집이 사는 개미 둥지를 한 과학자 팀이 분석했다. 둥지는 트리 구조이다. 각 노드는 개미 군집이 사는 실제 장소를 나타내고, 각 간선은 두 군집을 잇는 터널을 나타낸다. 각 군집은 정확히 하나의 색을 가지며, 그 색은 바뀔 수 있다. 색 변화는 주어진 두 군집 AA와 BB를 잇는 경로 위에서, 특정 색 cc를 가진 군집들 가운데 가장 가까운 쌍에 따라 정해진다. 두 군집 사이의 거리는 두 군집을 잇는 경로의 간선 수이다.

예를 들어 그림 A.1 (a)는 1번부터 5번까지 번호가 붙은 다섯 군집의 트리이다. 1번부터 5번 군집까지 색은 순서대로 1, 2, 2, 2, 1이다. 색 2와 2번, 5번 군집에 대해, 경로 위에서 가장 가까운 색 2 군집 쌍은 (2번, 3번)이다. 2번과 4번 군집에 대해서는 (3번, 4번) 쌍이 가장 가깝다.

그림 A.1 (b)처럼 3번 군집의 색이 2에서 3으로 바뀌었다고 하자. 그러면 색 2인 군집이 하나뿐이므로, 2번과 5번 군집 사이 경로에는 색 2의 가장 가까운 쌍이 없다. 2번과 4번 군집에 대해서는 색 2의 가장 가까운 쌍이 (2번, 4번)이 된다.

군집의 색, 트리, 그리고 순서가 정해진 업데이트 명령과 질의 명령이 주어질 때, 각 질의 (A,B,c)(A, B, c)마다 군집 AA와 BB 사이에서 색 cc를 가진 가장 가까운 군집 쌍을 찾는 프로그램을 작성하라.

그림 A.1 (a) 그림 A.1 (b)

입력

첫 줄에 두 정수 nn과 qq가 주어진다 (2≤n≤100,0002 \le n \le 100{,}000, 2≤q≤100,0002 \le q \le 100{,}000). nn은 군집의 수이고, qq는 업데이트와 질의 명령의 수이다. 군집은 1번부터 nn번까지 번호가 붙고, 색은 {1,2,⋯ ,n}\{1, 2, \cdots, n\}의 정수이다. 다음 줄에는 1번 군집부터 nn번 군집까지의 색이 순서대로 nn개 주어진다. 이어서 n−1n-1개의 줄에 터널로 연결된 두 군집 aia_i, bib_i (1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i)가 주어진다. 이어서 qq개의 줄에 (S,A,c)(S, A, c) 또는 (S,A,B,c)(S, A, B, c) 형태의 명령이 주어진다. SS는 대문자 U 또는 Q이다. U이면 AA번 군집의 색을 cc로 바꾼다 (1≤A,c≤n1 \le A, c \le n). Q이면 군집 AA와 BB 사이 경로에서 색 cc를 가진 가장 가까운 쌍의 거리를 출력한다 (1≤A,B,c≤n1 \le A, B, c \le n). 명령은 입력된 순서대로 실행한다.

출력

S=S = Q인 각 질의 (S,A,B,c)(S, A, B, c)에 대해, 현재 색 상태에서 군집 AA와 BB 사이 경로 위의 색 cc 군집 쌍 중 가장 가까운 쌍의 거리를 한 줄에 출력한다. 그런 쌍이 없으면 -1을 출력한다.

힌트

그림 A.1은 첫 번째 샘플 테스트에 해당하는 개미 둥지를 보여 준다.

예제2

  1. 예제 1

    입력
    5 5
    1 2 2 2 1
    1 2
    3 1
    3 4
    3 5
    Q 2 5 2
    Q 2 4 2
    U 3 3
    Q 2 5 2
    Q 2 4 2
    
    예상 출력
    2
    1
    -1
    3
    
  2. 예제 2

    입력
    4 6
    2 1 1 1
    1 2
    1 3
    1 4
    Q 2 3 1
    Q 2 4 1
    Q 3 4 1
    U 1 1
    Q 2 3 1
    Q 2 4 1
    
    예상 출력
    2
    2
    2
    1
    1