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

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

가장 붐비는 철도 구간 (큰 입력)

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

요약
트리와 Q개의 경로가 주어질 때 각 간선을 지나는 경로 수를 세고, 최대인 간선을 끝점의 사전순으로 출력한다.
난이도

보통10점 중 7점

유형
트리, DFS, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

CINERIS라는 도시국가에는 철도역이 NN개 있다. 역을 잇는 철로는 N−1N-1개이고 전체가 트리를 이루므로, 서로 다른 두 역을 잇는 경로는 정확히 하나뿐이다.

이 나라를 다스리는 정민이는 사람이 가장 많이 지나간 구간이 어디인지 알고 싶다. 지금까지 팔린 표는 QQ개이고, 표 한 장에서 알 수 있는 정보는 출발역과 도착역뿐이다.

CINERIS 주민은 모두 최단 경로로 이동한다. 트리에서 두 역을 잇는 경로는 하나뿐이므로, 표 한 장은 그 경로에 놓인 구간을 각각 정확히 한 번 지난다. QQ개의 표 정보로 사람이 가장 많이 지나간 구간을 구하라.

입력

첫째 줄에 NN과 QQ가 주어진다.

다음 N−1N-1개 줄에는 두 정수 aa, bb가 주어진다. aa번 역과 bb번 역을 잇는 양방향 철로가 있다는 뜻이다.

이어지는 QQ개 줄에는 표 한 장의 출발역 cc와 도착역 dd가 주어진다. 그 표를 산 사람은 cc번 역에서 출발해 dd번 역에 도착했다.

1≤N≤2222221 \le N \le 222222, 1≤Q≤2222221 \le Q \le 222222

철로가 트리를 이루므로 모든 역은 서로 연결되어 있다. 철로가 하나도 없는 입력, 즉 N=1N = 1인 입력은 주어지지 않는다. 표의 출발역과 도착역은 서로 다르다.

출력

사람이 가장 많이 지나간 구간과 그 구간을 지난 사람 수를 한 줄에 출력한다. 세 정수 aa, bb, cc를 공백으로 구분해 출력하며, aa번 역과 bb번 역을 잇는 구간을 cc명이 지났다는 뜻이다. 두 역 번호는 a<ba < b가 되도록 오름차순으로 쓴다.

사람이 가장 많이 지나간 구간이 여러 개라면 (a,b)(a, b)가 사전 순으로 가장 작은 것을 출력한다. 즉 aa가 더 작은 구간을 고르고, aa가 같으면 bb가 더 작은 구간을 고른다.

예제2

  1. 예제 1

    입력
    4 7
    1 2
    2 3
    3 4
    1 3
    2 4
    1 2
    3 4
    1 4
    2 3
    1 3
    
    예상 출력
    2 3 5
    
  2. 예제 2

    입력
    5 2
    3 1
    3 2
    3 4
    3 5
    1 2
    4 5
    
    예상 출력
    1 3 1