Kruskal:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Kruskal {
public static List<int[]> kruskal(List<int[]> graph,int n){
List<int[]> allPath=new ArrayList<int[]>();
int[] uf=new int[n];
for(int i=0;i<uf.length;i++) uf[i]=i;
Collections.sort(graph,new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[2]-o2[2];
}
});
for(int[] temp:graph){
int i=temp[0];int j=temp[1];
while(i!=uf[i]) i=uf[i];
while(j!=uf[j]) j=uf[j];
if(i==j) continue;
allPath.add(temp);
uf[j]=i;
}
return allPath;
}
public static void main(String[] args) {
int m=6;
int[][] input={
{1,2,6},
{1,3,1},
{1,4,5},
{2,3,5},
{2,5,3},
{3,4,5},
{3,5,6},
{3,6,4},
{4,6,2},
{5,6,6} };
List<int[]> graph=new ArrayList<int[]>();
for(int i=0;i<input.length;i++){
graph.add(new int[]{input[i][0]-1,input[i][1]-1,input[i][2]});
}
List<int[]> re=kruskal(graph, m);
for(int i=0;i<re.size();i++){
int[] temp=re.get(i);
System.out.println(temp[0]+" ---> "+temp[1]+":"+temp[2]);
}
}
// 1 ---> 4:3
// 2 ---> 1:5
// 0 ---> 2:1
// 5 ---> 2:4
// 3 ---> 5:2
}