마을과 도로
시간 제한2초메모리 제한512 MB
마을들이 트리 형태로 주어질 때, 도로를 닫거나 다시 열고 로봇을 옮기는 질의를 처리합니다. 열린 도로만 따졌을 때 로봇에서 가장 먼 마을들을 출력합니다.
문제
개의 마을과 개의 양방향 도로가 있다. 마을은 부터 까지, 도로는 부터 까지 번호가 매겨져 있다. 번 도로는 마을 와 마을 를 잇고, 길이는 이다.
처음에는 모든 도로가 열려 있으며, 어느 마을에서든 하나 이상의 도로를 거쳐 다른 모든 마을에 도달할 수 있다.
로봇이 마을 에 있다.
개의 질의를 처리해야 한다. 각 질의는 다음 세 가지 유형 중 하나이다.
1: 로봇을 마을 로 옮긴다. 이 시점에 로봇이 있는 마을과 마을 는 열려 있는 도로 하나로 직접 연결되어 있음이 보장된다.2: 도로 를 닫는다. 이 시점에 도로 는 열려 있음이 보장된다.3: 도로 를 다시 연다. 이 시점에 도로 는 닫혀 있음이 보장된다.
각 질의 직후에, 열려 있는 도로만 고려했을 때 로봇이 현재 있는 마을에서 가장 먼 마을들을 출력한다.
입력
첫 줄에 마을의 수 이 주어진다 ().
이어지는 개의 줄에 번째 도로의 정보인 두 마을 번호 , 와 길이 가 주어진다 (, , ). 어느 마을에서든 하나 이상의 도로를 거쳐 다른 모든 마을에 도달할 수 있음이 보장된다.
다음 줄에 가 주어진다 (). 이후 개의 질의가 한 줄에 하나씩 주어진다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 질의 직후 로봇이 있는 마을에서 가장 먼 마을의 개수 를 먼저 쓰고, 이어서 그 마을 번호들을 오름차순으로 같은 줄에 출력한다.
모든 테스트에서 올바른 답의 를 모두 더한 값이 을 넘지 않음이 보장된다.