UVa 10462 - Is There A Second Way Left?

10462 - Is There A Second Way Left ?

 * http://acm.uva.es/p/v104/10462.html

Summary
Given a weighted undirected graph, we have to find the second best Minimum Spanning Tree.

Explanation

 * 1) Run a Depth-First Search or Breadth-First Search to see if the graph is connected, if no then output no way
 * 2) Now find the Minimum Spanning Tree and mark all the edges which is part of the MST.
 * 3) Ignore the edges which are part of the MST, one at a time and try to build a new MST with the available edges (be careful that the MST must be connected).
 * 4) *Find the weight of MST. Among all the connected MST's find the minimum weight which is the answer . If there is no connected MST, then output no second way..

Let us take an example, let there be 5 edges in a graph G labeled 1 to 5.

let the MST considering all the edges, consists of edges 1, 3, 5. now ignore edge 1 only and consider edge 2, 3, 4, 5 to build an MST if it is possible to build an mst calculate its weight now ignore edge 3 only do the same now ignore edge 5 only and do the same among all the MST's the minimum weight one is the second best MST.

Gotchas

 * MST must be connected

Implementations
Notes/Hints on actual implementation here.

Optimizations
Optimizations here.

Input
Input Here

Output
Output Here