본문 바로가기
코딩테스트

[백준] 1956번 '운동' - Java

by CuckooBird 2023. 7. 16.

문제


 

코드

맞았습니다가 뜬 코드입니다. - 메모리 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 🔍

https://velog.io/@nkrang/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B0%B1%EC%A4%80-1956-%EC%9A%B4%EB%8F%99-%ED%92%80%EC%9D%B4-%ED%8C%8C%EC%9D%B4%EC%8D%AC

'코딩테스트' 카테고리의 다른 글

[백준] 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