QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#6107. 하나의 경로

Statistics

$N$개의 정점으로 이루어진 트리 $T$가 주어진다. 각 간선은 양의 정수 가중치를 가진다. 주어진 트리에 대해 다음 연산을 수행할 수 있다.

  • 그래프에서 간선 하나를 삭제한 뒤, 임의의 두 서로 다른 정점 사이에 새로운 간선을 추가한다. 이때 새로운 간선의 가중치는 삭제한 간선의 가중치와 같아야 한다. 결과로 얻어지는 그래프는 트리일 필요는 없다.

경로의 가중치는 경로에 포함된 간선들의 가중치 합으로 정의한다. 두 정점 $u$와 $v$ 사이의 거리는 $u$에서 $v$까지의 최단 경로(가중치가 최소인 경로)의 가중치로 정의한다. 만약 그러한 경로가 없다면 거리는 0으로 정의한다. 그래프의 가중치는 임의의 두 정점 사이의 거리 중 최댓값으로 정의한다.

당신의 임무는 연산을 정확히 $i$번 수행하여 얻을 수 있는 그래프의 최대 가중치를 $i = 0, 1, \dots, K$에 대해 각각 구하는 것이다.

입력

첫 번째 줄에는 두 개의 정수 $N$과 $K$가 공백으로 구분되어 주어진다. 이어지는 $N - 1$개의 줄의 $i$번째 줄에는 세 개의 정수 $u_i, v_i, w_i$가 공백으로 구분되어 주어지며, 이는 서로 다른 두 정점 $u_i$와 $v_i$를 잇는 가중치 $w_i$의 무방향 간선을 의미한다. 주어지는 간선들은 트리를 형성함이 보장된다.

  • $2 \le N \le 2000$
  • $0 \le K \le 2000$
  • $1 \le u_i < v_i \le N$ ($1 \le i \le N - 1$)
  • $1 \le w_i \le 10^9$ ($1 \le i \le N - 1$)

출력

$K + 1$개의 정수를 공백으로 구분하여 출력한다. $i$번째 정수는 연산을 정확히 $i - 1$번 수행하여 얻을 수 있는 그래프의 최대 가중치여야 한다.

예제

입력 1

5 1
1 3 2
4 5 4
3 4 3
2 3 7

출력 1

14 16

입력 2

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

출력 2

13 20 21

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.