QOJ.ac

QOJ

実行時間制限: 5 s メモリ制限: 1024 MB 満点: 100

#3045. 最小直径生成树

統計

给定一个包含 $N$ 个节点和 $M$ 条边的简单连通无向加权图 $G$。每个节点的编号为 $1$ 到 $N$。

图 $G$ 的生成树是 $G$ 的一个子图,它是一棵树且连接了 $G$ 的所有顶点。树的直径是指树中任意两个节点之间路径长度的最大值。$G$ 的最小直径生成树是指直径最小的生成树。

编写一个程序,求出任意一棵最小直径生成树。

输入格式

第一行包含两个整数 $N$ ($2 \le N \le 500$) 和 $M$ ($N - 1 \le M \le \frac{N(N-1)}{2}$)。

接下来 $M$ 行:第 $i$ ($1 \le i \le M$) 行包含三个空格分隔的整数 $u_i$、$v_i$ 和 $l_i$ ($1 \le u_i, v_i \le N, 1 \le l_i \le 10^9$);描述了一条连接顶点 $u_i$ 和顶点 $v_i$、长度为 $l_i$ 的双向边。

保证给定的图没有自环或重边,且图是连通的。

输出格式

第一行输出 $G$ 的最小直径生成树的直径。

接下来的 $N - 1$ 行,输出最小直径生成树中边的描述。第 $j$ ($1 \le j \le N - 1$) 行应包含两个空格分隔的整数 $x_j$ 和 $y_j$ ($1 \le x_j, y_j \le N$);描述了一条连接顶点 $x_j$ 和 $y_j$ 的双向边。

如果有多种可能的答案,输出其中任意一个即可。

样例

输入 1

3 3
1 2 1
2 3 1
3 1 1

输出 1

2
1 2
3 1

输入 2

6 7
1 2 10
2 3 20
1 3 30
3 4 1000
4 5 30
5 6 20
4 6 10

输出 2

1060
3 4
6 4
5 6
2 3
1 2

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#231EditorialOpen题解jiangly2025-12-13 00:22:39View

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.