전화 통화
시간 제한1초메모리 제한512 MB
집들이 이루는 트리 위에 m개의 전화선이 있고, 각 선은 두 경로의 합집합에 속한 서로 다른 두 집이 비용 w로 통화하게 한다. 집 1에서 연락할 수 있는 최대 집 수와 그때의 최소 비용을 구한다.
문제
바이트타운에는 , , , 번으로 표시된 채의 집이 있다. 각 집에는 한 사람이 살고 있다. Little Q는 번 집에 산다. 이 집들을 잇는 개의 양방향 도로가 나무 구조를 이룬다. 이 문제에서 는 번 집에서 번 집까지의 최단 경로 위에 있는 모든 집을 담은 집합이다.
바이트타운의 전화선 네트워크는 개의 서로 다른 회선으로 구성된다. 번째 회선은 다섯 정수 , , , , 로 나타내며, 에 속한 서로 다른 두 집 , 가 달러의 비용으로 전화 통화를 할 수 있다는 뜻이다.
Little Q는 자기 집에서 큰 파티를 열 계획이고, 가능한 한 많은 사람을 초대하려 한다. 초대 소식을 아는 사람은 누구나 다른 사람에게 몇 번이든 전화를 걸어 초대를 퍼뜨릴 수 있지만, 아무도 자기 집을 떠날 수는 없다.
파티에 참여할 수 있는 사람 수의 최댓값과, 그 최댓값에 도달하기 위한 최소 총비용을 구하는 프로그램을 작성하시오. 답에는 Little Q도 포함된다.
입력
입력의 첫째 줄에는 두 정수 과 이 주어진다. 은 집의 수, 은 전화선의 수이다 ().
다음 개 줄에는 각각 두 정수 와 가 주어지며, 번 집과 번 집 사이의 양방향 도로를 나타낸다. 집과 도로가 나무를 이룬다는 것이 보장된다.
다음 개 줄 중 번째 줄에는 전화선을 나타내는 다섯 정수 , , , , 가 주어진다 (, ).
출력
한 줄에 두 정수를 출력한다. 파티에 참여할 수 있는 사람 수의 최댓값과, 그 최댓값에 도달하기 위한 최소 총비용이다.
힌트
가능한 해법 하나는 다음과 같다.
1단계: 1번 집이 1번 회선으로 2번 집에 전화를 건다. 비용은 100이다.
2단계: 1번 집이 1번 회선으로 3번 집에 전화를 건다. 비용은 100이다.
3단계: 2번 집이 2번 회선으로 4번 집에 전화를 건다. 비용은 10이다.