QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 256 MB Total points: 100

#394. 지하철

Statistics

Bytown의 도로망은 $n$개의 교차로와 $n-1$개의 양방향 도로로 구성되어 있으며, 각 도로는 두 교차로를 직접 연결하고 모든 교차로 사이를 이동할 수 있습니다. 교통 개선을 위해 Byteasar 시장은 지하철 시스템을 구축하고자 합니다. 구체적으로, 그는 일부 교차로에 지하철역을 설치하고 도로를 따라 선로를 부설하려고 합니다. 지하철 네트워크는 연결되어 있어야 합니다. 즉, 열차는 임의의 두 지하철역 사이를 이동할 수 있어야 하며, 도중에 다른 지하철역을 거칠 수 있습니다.

터널을 뚫는 비용은 매우 높지만, 종착역(즉, 하나의 터널만 연결된 역)을 건설하는 비용은 더 높습니다. 이러한 역은 열차의 주박 및 유지보수를 위한 추가 기반 시설이 필요하기 때문입니다. 재정적 제약으로 인해 종착역의 개수는 최대 $k$개까지만 가능합니다. 반면, 합리적인 지하철 네트워크는 최소 두 개의 이러한 역을 필요로 합니다.

승객의 "짜증 지수"는 집에서 출발하여 가장 가까운 지하철역까지 도달하기 위해 거쳐야 하는 최소 도로 수로 정의됩니다. 시장은 모든 승객의 짜증 지수의 최댓값을 최소화하는 지하철 네트워크를 설계하고자 합니다. 각 교차로에는 승객이 거주한다고 가정합니다.

입력

첫 번째 줄에는 두 정수 $n$과 $k$ ($n \ge 3, 2 \le k \le n$)가 공백으로 구분되어 주어지며, 각각 교차로의 수와 종착역의 최대 개수를 나타냅니다. 교차로 번호는 $1$부터 $n$까지입니다.

다음 $n-1$개의 줄에는 각각 두 정수 $a$와 $b$ ($1 \le a, b \le n, a \neq b$)가 공백으로 구분되어 주어지며, 교차로 $a$와 $b$가 도로로 직접 연결되어 있음을 나타냅니다.

출력

첫 번째 줄에는 두 정수 $r$과 $s$를 공백으로 구분하여 출력합니다. $r$은 승객 짜증 지수의 최댓값의 최솟값이며, $s$는 해당 설계에서의 종착역 개수($2 \le s \le k$)입니다. 두 번째 줄에는 종착역으로 설정된 교차로 번호 $s$개를 공백으로 구분하여 출력합니다.

모든 네트워크 설계 중에서 $r$이 최소인 설계를 우선적으로 선택해야 합니다. 동점일 경우, $s$를 최소화하는 것을 차선책으로 합니다. $r$과 $s$가 모두 최소인 설계가 여러 개 존재할 경우, 그중 아무거나 출력해도 됩니다.

예제

예제 입력 1

8 3
1 5
2 5
2 7
3 7
4 5
5 6
7 8

예제 출력 1

1 2
8 1

참고

도로망은 그림과 같습니다. 최적의 지하철 네트워크 설계는 두 개의 종착역(1번과 8번 교차로)을 가집니다. 이에 대응하는 승객 짜증 지수의 최댓값은 1입니다. $r=1$과 $s=2$를 만족하는 다른 최적의 지하철 네트워크 설계도 존재할 수 있음에 유의하십시오. 또한 $r=1$과 $s=3$인 네트워크도 존재하지만, 이는 최적이 아닙니다.

예제 테스트

  • 1ocen: $n = 30, k = 29$, 교차로 $2, \dots, n$은 모두 교차로 $1$과 연결됨.
  • 2ocen: $n = 5000, k = 4000$, 교차로 $1, 2, \dots, 2000$이 순서대로 연결되어 경로를 형성하고, 교차로 $2001, \dots, 3500$은 모두 교차로 $1$과, 교차로 $3501, \dots, 5000$은 모두 교차로 $2000$과 연결됨.
  • 3ocen: $n = 2^{20} - 1, k = 1509$, 교차로들이 포화 이진 트리를 구성함.

서브태스크

테스트 세트는 다음과 같은 서브태스크로 구성됩니다. 각 서브태스크 내에는 여러 테스트 케이스가 포함될 수 있습니다. 프로그램이 첫 번째 줄만 올바르게 출력할 경우, 해당 테스트 케이스 점수의 50%를 획득합니다. 프로그램은 정상적으로 종료되어야 하며 시간 및 메모리 제한을 초과해서는 안 됩니다. 각 서브태스크의 시간 제한은 SIO에 게시되어 있습니다.

서브태스크 데이터 범위 점수
1 $n \le 5000$ 30
2 $n \le 500\,000$ 40
3 $n \le 3\,000\,000$ 30

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.