문제
코드
맞았습니다가 뜬 코드입니다. - 메모리 60196KB | 시간 772ms | 코드 길이 1334B
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
private static final int INF = 9900001;
public static void main(String[] args) throws IOException {
StringTokenizer st;
st = new StringTokenizer(bf.readLine());
int v = Integer.parseInt(st.nextToken());
int e = Integer.parseInt(st.nextToken());
int[][] node = new int[v][v];
for(int i = 0 ; i < v ; i++) {
for(int j = 0 ; j < v ; j++) {
node[i][j] = INF;
}
}
for(int i = 0 ; i < e ; i++) {
st = new StringTokenizer(bf.readLine());
int a = Integer.parseInt(st.nextToken()) - 1;
int b = Integer.parseInt(st.nextToken()) - 1;
int c = Integer.parseInt(st.nextToken());
node[a][b] = c;
}
// 플로이드-워셜 알고리즘
for(int k = 0 ; k < v ; k++) {
for(int i = 0 ; i < v ; i++) {
for(int j = 0 ; j < v ; j++) {
if(node[i][j] > node[i][k] + node[k][j]) {
node[i][j] = node[i][k] + node[k][j];
}
}
}
}
// 사이클이므로 i == i 일 때를 비교함
int ans = INF;
for(int i = 0 ; i < v ; i++) {
ans = Math.min(ans, node[i][i]);
}
if(ans == INF) bw.write("-1");
else bw.write(Integer.toString(ans));
bf.close();
bw.flush();
bw.close();
}
}
Search 🔍
'코딩테스트' 카테고리의 다른 글
[백준] 1092번 '배' - Java (1) | 2023.07.18 |
---|---|
[백준] 1068번 '트리' - Java (1) | 2023.07.17 |
[백준] 2109번 '순회강연' - Java (1) | 2023.07.14 |
[백준] 12904번 'A와 B' - Java (1) | 2023.07.13 |
[백준] 2064번 'IP 주소' - Java (1) | 2023.07.10 |