Broken Minimum Spanning Tree
Time limit1sMemory limit2048 MB
Given a spanning tree of a connected graph, find the fewest edge swaps that turn it into a minimum spanning tree and list those swaps.
- Level
Medium7 of 10
- Topics
- Minimum spanning tree, Graph
- Solved
- No attempts yet
Problem
Ethan was tasked with finding a minimum spanning tree of a weighted, connected, undirected graph. However, he misunderstood the task and found a spanning tree that may not be minimal. To make his spanning tree a minimum spanning tree, you perform a sequence of edge swaps. An edge swap removes one edge from the spanning tree and adds an edge from the graph that is not currently in the spanning tree. After each edge swap, the tree must still be a spanning tree. What is the minimum number of edge swaps you must perform to fix Ethan's minimum spanning tree?
Input
The first line contains two integers () and (), where is the number of nodes and is the number of edges. The nodes are numbered from to .
Each of the next lines contains three integers , (, ), and (), meaning an edge connects nodes and with weight . The edges are numbered from to .
The graph is connected. The first edges are Ethan's initial spanning tree. The graph may not be simple, so there can be multiple edges between the same pair of nodes.
Output
Output a single integer , the minimum number of edge swaps needed to make the spanning tree a minimum spanning tree. Then output lines, each with two integers and , where is the number of the edge to remove and is the number of the edge to add. If several sets of swaps work, any one is accepted.