μμμ κ³Ό λμ°©μ μ΄ μ ν΄μ Έ μμ§ μκ³ , κ²½λ‘μ ν©μ΄ κ°μ₯ μμ μ¬μ΄ν΄μ μ°ΎμΌλ©΄ λλ€.
μ¬μ΄ν΄μ μ΄λ»κ² μ°ΎμλΌμ§μ λν΄ μ΄λ ΅κ² μκ°νλλ°, νλ‘μ΄λ μμ
μκ³ λ¦¬μ¦ μ΄μ©ν΄μ dist[1][1]
, dist[2][2]
, ..., dist[V][V]
μ κ°λ€μ νμΈνλ©΄ λλ λ¬Έμ μλ€.
λμμ κ°μλ μ΅λ 400κ°μ΄κ³ , κ°μ μ κ°μλ μ΅λ V(V-1)λΌκ³ νμΌλ μ΅λ 16λ§κ°λ‘ 보면 λλ€.
μ΅λκ°λ€μ κΈ°μ€μΌλ‘ μκ°νμ λ, κ°μ μ 16λ§λ²μ μ½μΌλ©΄ λκ³ , νλ‘μ΄λ μμ μκ³ λ¦¬μ¦μ 400 x 400 x 400μ΄λκΉ 6μ² 4λ°±λ§ μ λμ μ°μ°λ§ νμνλ€.
μ΄ λ¬Έμ κ° νλ‘μ΄λ μμ μ μ΄μ©νλ©΄ λλ€λ κ±Έ μκ³ λλ©΄ μμ² μ¬μ΄λ°, κ·Έκ±Έ μμμ± μ§¬μ΄ λΆμ‘±νλ€
/* 2020.12.24(λͺ©) */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static int MAX = 2000000000;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().trim().split(" ");
int V = Integer.parseInt(str[0]);
int E = Integer.parseInt(str[1]);
int[][] dist = new int[V+1][V+1];
for(int i=1;i<=V;i++) {
Arrays.fill(dist[i], MAX);
}
int s,e,d;
for(int i=0;i<E;i++) {
str = br.readLine().trim().split(" ");
s = Integer.parseInt(str[0]);
e = Integer.parseInt(str[1]);
d = Integer.parseInt(str[2]);
dist[s][e] = d;
}
//νλ‘μ΄λ μμ
// k = κ²½μ μ§
for(int k=1;k<=V;k++) {
for(int a=1;a<=V;a++) {
if(dist[a][k]== MAX) continue;
for(int b=1;b<=V;b++) {
if(dist[k][b]== MAX) continue;
dist[a][b] = Math.min(dist[a][b], dist[a][k]+dist[k][b]);
}
}
}
int result = MAX;
for(int a=1;a<=V;a++) {
result = Math.min(result, dist[a][a]);
}
if(result == MAX) System.out.println(-1);
else System.out.println(result);
}
}
'μκ³ λ¦¬μ¦ > λ¬Έμ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ°] λ°±μ€ 1976 - μ¬ν κ°μ (0) | 2021.01.02 |
---|---|
[μλ°] λ°±μ€ 1717 - μ§ν©μ νν (0) | 2020.12.29 |
[μλ°] λ°±μ€ 11404 - νλ‘μ΄λ (0) | 2020.12.19 |
[μλ°] λ°±μ€ 2206 - λ²½ λΆμκ³ μ΄λνκΈ° (0) | 2020.12.12 |
[μλ°] λ°±μ€ 1697 - μ¨λ°κΌμ§ (1) | 2020.12.12 |