This is the simple Dijkstra module.
AcWing in AcWing
Using more than 2 hours to debug , last other guys told me that u must use long to instead of integer… fuck me.
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);
static int N = 510, n, m;
static long g[][] = new long[N][N], dist[] = new long[N];
static boolean st[] = new boolean[N];
static final int INF = Integer.MAX_VALUE;
public static int dijkstra() {
for (int i = 0; i < n - 1; i++) {
int t = -1;
for (int j = 1; j <= n; j++)
if (!st[j] && (t == -1 || dist[t] > dist[j]))
t = j;
st[t] = true;
for (int j = 1; j <= n; j++) dist[j] = Math.min(dist[j], dist[t] + g[t][j]);
}
if (dist[n] == INF) return -1;
return (int) dist[n];
}
public static void main(String[] args) throws Exception {
String[] s = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
m = Integer.parseInt(s[1]);
for (int i = 0; i < n; i++) Arrays.fill(g[i], INF);
Arrays.fill(dist, INF);
dist[1] = 0;
for (int i = 0; i < m; i++) {
s = br.readLine().split(" ");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
int c = Integer.parseInt(s[2]);
g[a][b] = Math.min(g[a][b], c);
}
pw.println(dijkstra());
pw.flush();
br.close();
}
}