package com.interview.algorithms.graph;
import com.interview.basics.model.graph.generic.Graph;
import com.interview.basics.model.graph.generic.Vertex;
import java.util.HashSet;
/**
* Created_By: zouzhile
* Date: 2/21/14
* Time: 7:23 AM
*/
public class C6_3_MinimumSpanningTree {
public void generateMST(Graph graph) {
HashSet<Vertex> visited = new HashSet<Vertex>();
HashSet<Vertex> candidates = new HashSet<Vertex>();
for(Vertex vertex : graph.vertexs()) {
if(! visited.contains(vertex)) {
candidates.add(vertex);
while(! candidates.isEmpty()) {
Vertex currentVertex = candidates.iterator().next();
for(Vertex adj : graph.adj(currentVertex)){
if(! candidates.contains(adj) && ! visited.contains(adj)) {
adj.setParent(currentVertex);
System.out.println(currentVertex.getValue() + " -> " + adj.getValue());
candidates.add(adj);
}
}
candidates.remove(currentVertex);
visited.add(currentVertex);
}
}
}
}
}