-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShortestPath.java
69 lines (62 loc) · 2.09 KB
/
ShortestPath.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class ShortestPath {
int vertices = 9;
public static void main (String[] args)
{
/* Let us create the example graph discussed above */
int graph[][] = new int[][]{{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}
};
ShortestPath t = new ShortestPath();
t.dijkstra(graph, 0,4);
}
private void dijkstra(int[][] graph, int src,int dest) {
// TODO Auto-generated method stub
int dist[] = new int[vertices];
boolean visited [] = new boolean[vertices];
for(int i=0;i<vertices;i++)
{
dist[i]=Integer.MAX_VALUE;
visited[i]=false;
}
dist[src]=0;
for(int i=0;i<vertices;i++)
{
int min = minimum(dist,visited);
visited[min]=true;
for(int j=0;j<vertices;j++)
{
if(!visited[j]&&graph[min][j]!=0&&dist[min]+graph[min][j]<dist[j]&&dist[min]!=Integer.MAX_VALUE)
dist[j]=dist[min]+graph[min][j];
}
}
//printSolution(dist, vertices); // if we want source to all vertices we use this method.
System.out.println(dist[dest]); // if we want only sorce to destionation we use this
}
// void printSolution(int dist[], int n)
// {
// System.out.println("Vertex Distance from Source");
// for (int i = 0; i < vertices; i++)
// System.out.println(i+" \t\t "+dist[i]);
// }
private int minimum(int[] dist, boolean[] visited) {
// TODO Auto-generated method stub
int index=-1;
int min_value = Integer.MAX_VALUE;
for(int i=0;i<vertices;i++)
{
if(visited[i]==false&&dist[i]<min_value)
{
min_value=dist[i];
index=i;
}
}
return index;
}
}