2

Click here to load reader

Prim.java - Notepad

Embed Size (px)

Citation preview

Page 1: Prim.java - Notepad

Prim.javaimport java.util.*;class Graph{ int g[][]; int v,e; int d[],p[],visited[]; void creategraph() { int a,b,w; Scanner kbd=new Scanner(System.in); System.out.println("Enter No. Of Vertices"); v=kbd.nextInt(); System.out.println("Enter No. Of edges"); e=kbd.nextInt(); //create matrix of v+1 rows & v+1 cols g=new int[v+1][v+1]; //initialize entire matrix g to zero for (int i=1;i<=v;i++) for (int j=1;j<=v;j++) g[i][j]=0; //store edge information for (int i=1;i<=e;i++) { System.out.println("Enter Edge Information"); a=kbd.nextInt(); b=kbd.nextInt(); System.out.println("Enter Weight Of This Edge"); w=kbd.nextInt(); g[a][b]=g[b][a]=w; } }//end creategraph void callprim() { visited = new int[v+1]; d=new int[v+1]; p=new int[v+1]; //initialize p & visited to zero for(int i=1;i<=v;i++) p[i]=visited[i]=0; //initialize d array to infinity for (int i=1;i<=v;i++) d[i]=32767; //now call prim function for vertex 1 prim(); } void prim() { int c,current,mincost=0; current=1; visited[current]=1; d[current]=0; c=1; while(c!=v) { //process vertex k for(int i=1;i<=v;i++) { if(g[current][i]!=0 && visited[i]!=1) if(g[current][i]<d[i]) { d[i]=g[current][i]; p[i]=current; }

Page 1

Page 2: Prim.java - Notepad

Prim.java }//end for //now look for vertex at shortest distance int min=32767; for(int i=1;i<=v;i++) { if(visited[i]!=1 && d[i]<min) { min=d[i]; current=i; } } //mark vertex current as visited visited[current]=1; c=c+1; }//end while //find out minimum cost by adding elements of d array for(int i=1;i<=v;i++) mincost +=d[i]; System.out.println("Minimum Cost ="+mincost); }//end prim}//end Graph Classpublic class Prim{ public static void main(String args[]) { Graph g=new Graph(); g.creategraph(); g.callprim(); }}

Page 2