해결한 사람
0
명
정답률
0.00
%
시간 제한
1000
ms
메모리 제한
245
MB
아주 오래전, 아시아의 어느 나라에서 내전이 벌어졌다.
n개의 도시는 각각 권력을 차지하고 싶어 했다. 그래서 때때로 한 도시가 군대를 모아 다른 도시를 공격하러 보냈다.
도로를 건설하기는 어려웠으므로, 이 나라에는 도로가 정확히 n - 1개뿐이었다. 또한 이 도로들을 따라가면 어느 도시에서든 다른 어느 도시로든 갈 수 있었다.
전쟁 중에도 동양 사람들은 정신적으로 풍요로웠으며 자연의 아름다움을 소중히 여겼다. 그리고 이 위대한 원정을 앞으로 수 세기 동안 기억하기 위해, 군대가 가장 많은 시간을 보낸 도로 옆에 아름다운 나무 하나를 심었다. The Oriental 사람들은 자연을 사랑하므로, 그러한 도로가 여러 개라면 각 도로 옆에 나무 하나씩을 심었다.
최근 전쟁 기록이 발견되면서, 각 도시는 서로를 정확히 한 번씩 공격했다는 사실이 밝혀졌다. 공격은 총 정확히 n(n - 1)번 있었다. 모두가 그 전쟁 이후 어느 도로가 가장 아름다워졌는지, 즉 어느 도로 옆에 가장 많은 아름다운 나무가 심어졌는지 궁금해했다.
첫 번째 줄에는 도시의 수를 나타내는 정수 n (2 ≤ n ≤ 105)이 주어진다. 다음 n - 1개의 줄에는 각각 세 정수, 즉 i-th번 도로로 연결된 도시의 번호 ai, bi (1 ≤ ai, bi ≤ n)와 군대가 그 도로를 지나가는 데 걸리는 일수 di (1 ≤ di ≤ 109)가 주어진다. 여러 도로의 길이는 같을 수도 있다.
첫 번째 줄에 가장 아름다운 도로에 있는 아름다운 나무의 수와 가장 아름다운 도로의 수, 두 정수를 출력한다. 두 번째 줄에는 가장 아름다운 도로들의 번호를 오름차순으로 정렬하여 출력한다. 도로에는 입력 데이터에 주어진 순서대로 1부터 n - 1까지 번호가 매겨진다.
C++에서 64-bit 정수를 출력할 때 %lld 지정자를 사용하지 말라. cout 스트림을 사용하는 것이 좋다(또한 %I64d 지정자를 사용할 수도 있다).
2
2 1 5
2 1
1 6
1 2 1
1 3 5
3 4 2
3 5 3
3 6 4
16 1
2