실행 시간 제한 | 메모리 제한 |
---|---|
2 초 | 512 MB |
세리는 사람들이 너무 밀접하게 모이면 싸우게 된다는 것을 알아챘습니다. 그래서 그녀는 사람들을 퍼뜨리기 위해 새로운 건물을 여러개 짓기로 결심했습니다.
세리가 새 건물을 지을 때마다, 그는 최대 하나의 기존 건물과 양 방향 경로를 연결합니다. 사람들이 충분히 퍼져 있도록 하기 위해 그녀는 특정 건물에서 가장 멀리 떨어진 건물까지의 거리를 알고 싶어합니다 (두 건물 사이의 거리는 한 건물에서 다른 건물로 이동하기 위해 거쳐야 하는 경로의 수입니다).
세리는 총 ()개의 질문을 할 것입니다. 각각은 "build" 또는 "distance" 형식 중 하나입니다. "build" 질문의 경우, 세리는 건물을 짓고 기존 건물 중 하나와 최대 하나의 경로를 연결합니다. "distance" 질문의 경우, 세리는 특정 건물에서 경로를 통해 도달할 수 있는 가장 먼 건물까지의 거리를 묻습니다. 질문이 들어온 건물은 이미 지어졌다는 것이 보장됩니다. 세리가 이러한 모든 질문에 대한 답변을 말하는 것을 도와주세요.
첫 번째 줄에 정수 가 주어집니다. 다음 개의 줄 각각에는 질문이 포함됩니다. 각 질문은 "B p" 또는 "Q k" 형식 중 하나입니다. "B p" 질문은 건물을 건설하고 건물 와 연결하도록 지시하며, "Q k" 질문은 건물 로부터 정의된 대로 가장 먼 거리를 제공합니다. 만약 이면, 새 건물은 다른 건물과 연결되지 않습니다. 그렇지 않으면 는 이미 지어진 건물의 인덱스입니다. 건물 인덱스는 부터 시작하므로 첫 번째 지어진 건물은 건물 이 되며, 두 번째는 건물 가 되고, 이와 같이 이어집니다.
각 거리 질문에 대해 한 줄의 출력을 작성하세요. 참고로, 다른 건물과 연결되지 않은 건물의 최대 거리는 입니다.
7 B -1 Q 1 B 1 B 2 Q 3 B 2 Q 2
0 2 1
예제 입력은 다음과 같은 건물 네트워크에 해당합니다:
(1)
\
(2)---(4)
/
(3)
질문 1에서는 건물 번호 1을 건설합니다. 질문 2에서는 건물 1부터 가장 멀리 떨어진 건물까지의 거리를 요청합니다. 건물 1은 다른 건물과 연결되지 않았으므로 답은 0입니다. 질문 3에서는 건물 번호 2를 건설하고 건물 1과 연결합니다. 질문 4에서는 건물 번호 3을 건설하고 건물 2와 연결합니다. 질문 5에서는 건물 3부터 가장 멀리 떨어진 건물까지의 거리를 요청합니다. 이 경우, 가장 먼 거리인 건물 1까지의 거리는 2입니다. 질문 6에서는 건물 번호 4를 건설하고 건물 2와 연결합니다. 질문 7에서는 건물 2부터 가장 멀리 떨어진 건물까지의 거리를 요청합니다. 건물 1, 3, 4가 모두 동일한 거리인 1로, 이것이 우리의 답입니다.
출처: USACO 2018 February Contest, Platinum Problem 2. New Barns