Pagini recente » Cod sursa (job #691593) | Cod sursa (job #3160813) | Cod sursa (job #1763452) | Cod sursa (job #2961319) | Cod sursa (job #2064256)
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.PriorityQueue;
public class Main {
static int n;
static int m;
static List<Edge>[] g;
static int[] dist;
static class Edge {
int to;
int cost;
Edge(int to, int cost) {
this.to = to;
this.cost = cost;
}
}
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("dijkstra.in")));
PrintWriter out = new PrintWriter(new FileOutputStream("dijkstra.out"));
String[] parts = br.readLine().split(" ");
n = Integer.parseInt(parts[0]);
m = Integer.parseInt(parts[1]);
g = new List[n];
dist = new int[n];
// Arrays.fill(g, new ArrayList<>());
for (int i = 0; i < n; i++) {
g[i] = new ArrayList<>();
}
Arrays.fill(dist, Integer.MAX_VALUE);
dist[0] = 0;
for (int i = 0; i < m; i++) {
parts = br.readLine().split(" ");
int from = Integer.parseInt(parts[0]) - 1;
int to = Integer.parseInt(parts[1]) - 1;
int cost = Integer.parseInt(parts[2]);
g[from].add(new Edge(to, cost));
// out.println(from + ", " + to + ", " + cost);
}
PriorityQueue<Long> pq = new PriorityQueue<>();
pq.add(0L);
while (!pq.isEmpty()) {
int node = pq.poll().intValue();
ListIterator<Edge> it = g[node].listIterator();
while (it.hasNext()) {
Edge e = it.next();
if (dist[node] + e.cost < dist[e.to]) {
dist[e.to] = dist[node] + e.cost;
pq.offer(((1L * e.cost) << 32) + e.to);
}
}
}
StringBuilder sb = new StringBuilder("");
for (int i = 1; i < n; i++) {
if (dist[i] < Integer.MAX_VALUE) {
sb.append(dist[i]).append(" ");
} else {
sb.append("0 ");
}
}
out.println(sb);
out.close();
}
}