만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

만남의 장소

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

요약
간선 정보가 숨겨진 트리에서 세 노드를 골라 묻는 질의만으로, 모든 노드까지 거리 합이 최소인 노드를 찾습니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복, 구현
정답자
아직 제출이 없습니다

문제

NN명의 친구가 각자 NN개의 노드로 이루어진 트리의 노드 한 개씩에 살고 있다. NN은 홀수이다. 트리는 간선이 정확히 N−1N-1개인 연결 그래프이다.

친구들은 트리의 한 노드에서 모이려고 한다. 모든 친구까지 거리의 합이 가장 작은 노드를 만남의 장소로 정하기로 했고, 이 최적의 장소를 찾아 달라고 부탁했다. 두 노드 aa와 bb 사이의 거리 dist(a,b)\text{dist}(a,b)는 두 노드를 잇는 경로의 간선 수이다. 정식으로 말하면, ∑i=1ndist(x,i)\sum_{i=1}^{n} \text{dist}(x,i)를 최소로 하는 노드 xx를 찾아야 한다.

친구들은 트리의 모양을 기억하지 못한다. 대신 서로 다른 세 친구 aa, bb, cc가 주어지면, (그 셋만 있을 때) dist(x,a)+dist(x,b)+dist(x,c)\text{dist}(x,a)+\text{dist}(x,b)+\text{dist}(x,c)를 최소로 하는 노드 xx에서 모인다는 것은 기억하고 있다. xx가 반드시 aa, bb, cc 중 하나일 필요는 없다.

트리는 입력으로 주어지지 않는다. 세 친구 aa, bb, cc가 주로 어디에서 모이는지 묻는 질문을 최대 Q−1Q-1번까지 할 수 있다. 이 질문들로 최적의 만남의 장소를 찾아야 한다.

예시 트리의 그림이다. 노드 2가 최적의 만남의 장소이다.

제한

3≤N≤24 9993 \le N\le 24\,999

예제1

  1. 예제 1

    입력
    5 500000
    1 2
    2 3
    2 4
    4 5
    
    예상 출력
    ? 1 2 4
    ? 1 3 4
    ? 1 4 5
    ? 1 2 3
    ? 1 2 5
    ! 3