Skip to content

Commit

Permalink
Add visited array
Browse files Browse the repository at this point in the history
  • Loading branch information
yjcho92 committed Nov 4, 2016
1 parent 601a9fa commit 39201d9
Showing 1 changed file with 23 additions and 26 deletions.
49 changes: 23 additions & 26 deletions [Algorithm_hw07]/src/Main.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

/**
Expand All @@ -23,35 +22,29 @@ public static void main(String[] args) throws IOException {

int[] d = new int[numOfVertex + 1];
int[][] w = new int[numOfVertex + 1][numOfVertex + 1];
boolean[] visited = new boolean[numOfVertex + 1];

initDistAndWeightArray(INF, numOfVertex, startPoint, d, w);
initValue(INF, numOfVertex, startPoint, d, w, visited);

inputWeightedGraph(br, numOfEdge, w);

System.out.println("\nResult of Dijkstra algorithm...\n");

dijkstra(INF, numOfVertex, startPoint, d, w);
dijkstra(INF, numOfVertex, startPoint, d, w, visited);

printDist(numOfVertex, d);

br.close();
}

/**
* Dijkstra algorithm using min heap.
*
* @param INF
* @param numOfVertex
* @param startPoint
* @param d
* @param w
*/
private static void dijkstra(int INF, int numOfVertex, char startPoint, int[] d, int[][] w) {
private static void dijkstra(int INF, int numOfVertex, char startPoint, int[] d, int[][] w, boolean[] visited) {
MinHeap pQueue = new MinHeap();
pQueue.add(new Edge(startPoint, 0));

while (!pQueue.isEmpty()) {
Edge edge = pQueue.poll();
if(visited[charToNum(edge.to)]) continue;
visited[charToNum(edge.to)] = true;
int here = charToNum(edge.to);
System.out.println("S <- " + edge);
for (int to = 1; to <= numOfVertex; to++) {
Expand All @@ -67,6 +60,23 @@ private static void dijkstra(int INF, int numOfVertex, char startPoint, int[] d,
}
}

private static void initValue(int INF, int numOfVertex, char startPoint, int[] d, int[][] w, boolean[] visited) {
for (int i = 1; i <= numOfVertex; i++) {
if (i == charToNum(startPoint)) continue;
d[i] = INF;
}

for (int i = 1; i <= numOfVertex; i++) {
for (int j = 1; j < numOfVertex; j++) {
w[i][j] = INF;
}
}

for (int i = 1; i<= numOfVertex; i++) {
visited[i] = false;
}
}

private static void inputWeightedGraph(BufferedReader br, int numOfEdge, int[][] w) throws IOException {
StringTokenizer stk;
for (int i = 1; i <= numOfEdge; i++) {
Expand All @@ -84,19 +94,6 @@ private static void printDist(int numOfVertex, int[] d) {
System.out.printf("d[%c] : %d\n", numToChar(i), d[i]);
}

private static void initDistAndWeightArray(int INF, int numOfVertex, char startPoint, int[] d, int[][] w) {
for (int i = 1; i <= numOfVertex; i++) {
if (i == charToNum(startPoint)) continue;
d[i] = INF;
}

for (int i = 1; i <= numOfVertex; i++) {
for (int j = 1; j < numOfVertex; j++) {
w[i][j] = INF;
}
}
}

/**
* Index number to char function.
*
Expand Down

0 comments on commit 39201d9

Please sign in to comment.