This commit is contained in:
2026-05-18 20:03:32 +05:30
commit 796dec1af7
17 changed files with 474 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
import java.util.*;
public class kruskalMST{
static class Edge implements Comparable<Edge>{
int u,v,weight;
Edge(int u, int v, int weight){
this.u=u;
this.v = v;
this.weight = weight;
}
public int compareTo(Edge other){
return this.weight-other.weight;
}
}
static int[] parent;
static int find(int x){
if(parent[x]!=x)
parent[x] = find(parent[x]);
return parent[x];
}
static void union(int x, int y){
int rootX = find(x);
int rootY = find(y);
parent[rootY]= rootX;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("ENter number of vertices: ");
int N = sc.nextInt();
int[][] graph = new int[N][N];
System.out.println("\nEnter adjacency matrix(0 if no edge): ");
for(int i =0;i<N;i++){
for(int j =0;j<N;j++){
graph[i][j] = sc.nextInt();
}
}
List<Edge> edges = new ArrayList<>();
for(int i =0;i<N;i++){
for(int j =i+1;j<N;j++){
if(graph[i][j]!=0)
edges.add(new Edge(i,j,graph[i][j]));
}
}
Collections.sort(edges);
parent = new int[N];
for(int i = 0;i<N;i++){
parent[i]= i;
}
int totalCost = 0;
int edgeCount = 0;
System.out.println("\nEdges in MST:");
for(Edge e : edges){
int rootU = find(e.u);
int rootV = find(e.v);
if(rootU!=rootV){
System.out.println(e.u+" - "+e.v+" : "+e.weight);
totalCost+=e.weight;
union(rootU,rootV);
edgeCount++;
if(edgeCount == N-1)
break;
}
}
System.out.print("\ntotal minimum cost: "+totalCost);
sc.close();
}
}