1function kruskal(n, edges) {
2 edges.sort((a, b) => a.w - b.w);
3 const parent = Array.from({length: n}, (_, i) => i);
4 const mst = []; let totalWeight = 0;
5 for (const {u, v, w} of edges) {
6 const ru = find(parent, u), rv = find(parent, v);
7 if (ru === rv) continue;
8 parent[ru] = rv;
9 mst.push({u, v, w}); totalWeight += w;
10 if (mst.length === n - 1) break;
11 }
12 return { mst, totalWeight };
13}