최소신장트리란 신장트리 중 간선의 가중치의 합이 최소가 되는 트리이다.

신장트리(Spanning Tree)
그래프 상에서 모든 노드가 사이클 없이 연결된 부분 그래프
- 그래프의 모든 정점 포함
- 정점의 개수가
n개이면, 간선의 개수는n-1개
간선을 중심으로 최소신장트리를 구하는 알고리즘으로 간선이 적을 때는 프림 알고리즘보다 유리하다.
주의할점
사이클이 생기면 안 된다.
// graph[i][0] : 출발노드
// graph[i][1] : 도착노드
// graph[i][2] : 가중치
public static int kruskal(int[][] graph, int[] parent) {
int cost = 0;
for(int i=0; i<graph.length; i++) {
if(find(parent, graph[i][0]) != find(parent, graph[i][1])) {
cost += graph[i][2];
union(parent, graph[i][0], graph[i][1]);
}
}
return cost;
}