package graphtea.extensions.reports.spanningtree; public class MSTPrim { public int[] prim(int g[][]) { int[] parent = new int[g.length]; int[] id = new int[g.length]; boolean[] MST = new boolean[g.length]; for (int i = 0; i < g.length; i++) { id[i] = 1000000; MST[i] = false; } id[0] = 0; parent[0] = -1; for (int count = 0; count < g.length - 1; count++) { int u = minimumID(id, MST); MST[u] = true; for (int v = 0; v < g.length; v++) if (g[u][v] != 0 && !MST[v] && (g[u][v] < id[v])) { parent[v] = u; id[v] = g[u][v]; } } return parent; } public int minimumID(int id[], boolean MST[]) { int min = 10000, minIndex=0; for (int v = 0; v < id.length; v++) { if (!MST[v] && id[v] < min) { min = id[v]; minIndex = v; } } return minIndex; } }