Pagini recente » Cod sursa (job #1118431) | Cod sursa (job #1149040) | Cod sursa (job #1663196) | Cod sursa (job #1602003) | Cod sursa (job #1733945)
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.*;
/**
* Created by Ada on 7/25/2016.
*/
public class Main {
public static void main(String[] argv) {
Integer n, m;
HashMap<Integer, HashMap<Integer, Integer>> graph = new HashMap<Integer, HashMap<Integer, Integer>>();
//read graph
try {
Integer x, y, cost;
Scanner scanner = new Scanner(new FileInputStream("dijkstra.in"));
n = scanner.nextInt();
m = scanner.nextInt();
for (int i = 1; i <= n; i++) {
graph.put(i, new HashMap<Integer, Integer>());
}
for (int j = 1; j <= m; j++) {
x = scanner.nextInt();
y = scanner.nextInt();
cost = scanner.nextInt();
graph.get(x).put(y, cost);
graph.get(y).put(x, cost);
}
scanner.close();
} catch (Exception exception) {
exception.printStackTrace();
return;
}
//bellman ford
Integer distances[] = new Integer[n + 1];
Arrays.fill(distances, Integer.MAX_VALUE);
distances[1] = 0;
Integer predecessor[] = new Integer[n + 1];
Arrays.fill(predecessor, 1);
for (int i = 1; i <= n; i++) {
for (Map.Entry<Integer, Integer> neighbour : graph.get(i).entrySet()) {
if (distances[neighbour.getKey()] > distances[i] + neighbour.getValue()) {
distances[neighbour.getKey()] = distances[i] + neighbour.getValue();
predecessor[neighbour.getKey()] = i;
}
}
}
//write output file
try {
FileWriter fileWriter = new FileWriter("dijkstra.out");
for (int i = 2; i <= n; i++) {
fileWriter.write(distances[i] + " ");
}
fileWriter.write("\n");
fileWriter.close();
} catch (Exception exception) {
exception.printStackTrace();
}
return;
}
}