#P14620. [2019 KAIST RUN Fall] Minimum Diameter Spanning Tree

[2019 KAIST RUN Fall] Minimum Diameter Spanning Tree

题目描述

You are given a simple connected undirected weighted graph GG with NN nodes and MM edges. Each node is numbered 1 through NN.

A spanning tree of GG is a subgraph of GG, which is a tree and connects all the vertices of GG. The diameter of a tree is the length of the longest path among the paths between any two nodes in the tree. A minimum diameter spanning tree of GG is a spanning tree of GG that has a minimum diameter.

Write a program that finds any minimum diameter spanning tree.

输入格式

The first line of the input contains two integers NN (2N5002 \le N \le 500) and MM (N1MN(N1)2N-1 \le M \le \frac{N(N-1)}{2}).

Then MM lines follow: The ii (1iM1 \le i \le M)-th line contains three space-separated integers uiu_i, viv_i and lil_i (1ui,viN1 \le u_i, v_i \le N, 1li1091 \le l_i \le 10^9); it describes a bidirectional edge connecting vertex uiu_i and vertex viv_i with length lil_i.

It is guaranteed that the given graph doesn't have any loops or multiple edges, and the graph is connected.

输出格式

In the first line, print the diameter of the minimum diameter spanning tree of GG.

In the next N1N-1 lines, print the description of the edges in the minimum diameter spanning tree of GG. The jj (1jN11 \le j \le N-1)-th line should contain two space-separated integers xix_i and yiy_i (1xi,yiN1 \le x_i, y_i \le N); it describes a bidirectional edge connecting vertex xix_i and yiy_i.

If there are several possible answers, print any one of them.

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