Untitled

 avatar
unknown
plain_text
22 days ago
1.5 kB
5
Indexable
package pkg;
import java.util.*;
class Kruskal
{
	int n,c[][],st[][],par[];
	void read()
	{
		Scanner scr=new Scanner(System.in);
		System.out.println("Enter the number of vertices: ");
		n=scr.nextInt();
		c=new int[n+1][n+1];
		par=new int[n+1];
		System.out.println("Enter the cost adjacency matrix ");
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				c[i][j]=scr.nextInt();
		for(int i=1;i<=n;i++)
			par[i]=i;
	}
	int find(int i)
	{
		i=par[i];
		return i;		
	}
	void algo()
	{
		int mincost=0,e=0,min,u=0,v=0,a,b;
		st=new int[n+1][n+1];
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				st[i][j]=c[i][j];
		System.out.println("Minimum cost spanning tree is : ");
		while(e!=n-1)
		{
			min=999;
			for(int i=1;i<=n;i++)
				for(int j=1;j<=n;j++)
					if(min>st[i][j])
					{
						min=st[i][j];
						u=i;
						v=j;
					}
			System.out.println(u+"-> "+v);
			st[u][v]=999;
			a=find(u);
			b=find(v);
			if(a!=b)
			{
				e++;	
				System.out.println(e+":");
				System.out.println(u+">"+v+"cost:"+min);
				unions(a,b);
				mincost=mincost+min;
			}			
			else                                         
				System.out.println(u+"->"+v+"rejected: forms a cycle ");
		}
		System.out.println("Cost of spanning tree "+mincost);
		}
	void unions(int i,int j) {
		par[j]=i;
		}
}

public class KruskalDemo {

	public static void main(String[] args)
	{
		Kruskal k=new Kruskal();
		k.read();
		k.algo();
		}

}
Editor is loading...
Leave a Comment