간선을 정렬한다
가장 싼 간선부터 보되 이미 같은 컴포넌트를 잇는 간선은 사이클을 만들므로 버린다.
MST는 모든 정점을 연결하되 간선 비용 합을 최소화한다. Kruskal은 간선을 비용순으로 보며 union-find로 사이클 여부를 빠르게 판단한다.
가장 싼 간선부터 보되 이미 같은 컴포넌트를 잇는 간선은 사이클을 만들므로 버린다.
find에서 경로 압축을 적용하면 이후 대표 조회 비용이 거의 상수에 가까워진다.
선택한 간선 수가 n-1보다 작으면 그래프가 연결되지 않았다는 뜻이다.
sort(edges.begin(), edges.end());
for (auto [w, a, b] : edges) {
if (find(a) == find(b)) continue;
unite(a, b); total += w; ++picked;
}