Those who cannot remember the past are condemned to repeat it.
Dijkstra’s Shortest Path Algorithm
publicclassAlogrithmDijkstra{staticfinalintV=9;intminDistance(intdist[],BooleansptSet[]){// Initialize min valueintmin=Integer.MAX_VALUE,min_index=-1;for(intv=0;v<V;v++)if(sptSet[v]==false&&dist[v]<=min){min=dist[v];min_index=v;}returnmin_index;}// A utility function to print the constructed distance arrayvoidprintSolution(intdist[]){System.out.println("Vertex \t\t Distance from Source");for(inti=0;i<V;i++)System.out.println(i+" \t\t "+dist[i]);}// Function that implements Dijkstra's single source shortest path// algorithm for a graph represented using adjacency matrix// representationvoiddijkstra(intgraph[][],intsrc){intdist[]=newint[V];// The output array. dist[i] will hold// the shortest distance from src to i// sptSet[i] will true if vertex i is included in shortest// path tree or shortest distance from src to i is finalizedBooleansptSet[]=newBoolean[V];// Initialize all distances as INFINITE and stpSet[] as falsefor(inti=0;i<V;i++){dist[i]=Integer.MAX_VALUE;sptSet[i]=false;}// Distance of source vertex from itself is always 0dist[src]=0;// Find shortest path for all verticesfor(intcount=0;count<V-1;count++){// Pick the minimum distance vertex from the set of vertices// not yet processed. u is always equal to src in first// iteration.intu=minDistance(dist,sptSet);// Mark the picked vertex as processedsptSet[u]=true;// Update dist value of the adjacent vertices of the// picked vertex.for(intv=0;v<V;v++)// Update dist[v] only if is not in sptSet, there is an// edge from u to v, and total weight of path from src to// v through u is smaller than current value of dist[v]if(!sptSet[v]&&graph[u][v]!=0&&dist[u]!=Integer.MAX_VALUE&&dist[u]+graph[u][v]<dist[v])dist[v]=dist[u]+graph[u][v];}// print the constructed distance arrayprintSolution(dist);}// Driver methodpublicstaticvoidmain(String[]args){/* Let us create the example graph discussed above */intgraph[][]=newint[][]{{0,4,0,0,0,0,0,8,0},{4,0,8,0,0,0,0,11,0},{0,8,0,7,0,4,0,0,2},{0,0,7,0,9,14,0,0,0},{0,0,0,9,0,10,0,0,0},{0,0,4,14,10,0,2,0,0},{0,0,0,0,0,2,0,1,6},{8,11,0,0,0,0,1,0,7},{0,0,2,0,0,0,6,7,0}};AlogrithmDijkstrat=newAlogrithmDijkstra();t.dijkstra(graph,0);}}