Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I think I may have solved the issue, by modifying the code as follows (I'm now passing in a start point instead of the hard-coded in "0"):
- private static int dijkstras(Graph g, int start) // Added a start point.
- {
- // Dijkstra's Algorithm
- int[] best = new int[g.network.length];
- boolean[] visited = new boolean[g.network.length];
- int max = 10000; // Infinity equivalent.
- for (int i = 0; i < g.network.length; i++)
- {
- best[i] = max;
- visited[i] = false;
- }
- best[start] = start; // Changed the 0 to variable start.
- for(int i = 0; i < g.network.length; i++)
- {
- int min = max;
- int currentNode = 0;
- for (int j = 0; j < g.network.length; j++)
- {
- if (!visited[j] && best[j] < min)
- {
- currentNode = j;
- min = best[j];
- }
- }
- visited[currentNode] = true;
- for (int j = 0; j < g.network.length; j++)
- {
- if (g.network[currentNode][j] < max && best[currentNode] + g.network[currentNode][j] < best[j])
- {
- best[j] = best[currentNode] + g.network[currentNode][j];
- }
- }
- }
- return best[g.network.length - 2];
- }
- I ran this code through a for loop and voila....not just zero's being returned now.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement