티스토리 뷰

Algorithm

백준_비밀 모임_13424

Young_J 2021. 3. 12. 23:29

// 알고리즘

1. 최단경로 ( 플로이드, 다익스트라 )

 

2. 플로이드 알고리즘으로 각 노드마다 최단거리를 구함

 

3. 주어진 노드에서 각각노드까지의 최소합을 구해서 출력

더보기
import java.util.*;
import java.io.*;

public class 비밀모임_13424 {

	static int T, N, M, K, arr[], dis[][], ans;
	static final int inf = 1000001;

	public static void main(String[] args) throws Exception {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		T = Integer.parseInt(br.readLine());

		for (int tc = 0; tc < T; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			N = Integer.parseInt(st.nextToken());
			M = Integer.parseInt(st.nextToken());
			ans = 0;

			dis = new int[N + 1][N + 1];
			for (int i = 1; i <= N; i++) {
				for (int j = 1; j <= N; j++) {
					if (i == j)
						dis[i][j] = 0;
					else
						dis[i][j] = inf;
				}
			}

			for (int i = 0; i < M; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				int to = Integer.parseInt(st.nextToken());
				int from = Integer.parseInt(st.nextToken());
				int cnt = Integer.parseInt(st.nextToken());

				dis[to][from] = cnt;
				dis[from][to] = cnt;
			}

			K = Integer.parseInt(br.readLine());
			arr = new int[K];

			st = new StringTokenizer(br.readLine(), " ");
			for (int i = 0; i < K; i++) {
				arr[i] = Integer.parseInt(st.nextToken());
			}

			for (int k = 1; k < dis.length; k++) {// 거쳐가는 노드
				for (int i = 1; i < dis.length; i++) {// 출발 노드
					for (int j = 1; j < dis.length; j++) {// 도착 노드
						if (dis[i][k] + dis[k][j] < dis[i][j]) {
							dis[i][j] = dis[i][k] + dis[k][j];
						}
					}
				}
			}

			int sum = Integer.MAX_VALUE;
			for (int i = 1; i <= N; i++) {
				int s = 0;
				for (int j = 0; j < K; j++) {
					s += dis[arr[j]][i];
				}
				if (s < sum) {
					sum = s;
					ans = i;
				}

			}

			System.out.println(ans);

		}

	}

}

 

※ 다익스트라보다 플로이드가 잘 어울리는 문제같음. ( 노드가 최대 100개 이기 때문에)

'Algorithm' 카테고리의 다른 글

프로그래머스_타켓 넘버  (0) 2021.03.19
백준_행성 터널_2887  (0) 2021.03.16
백준_거의최단경로_5719  (0) 2021.03.11
백준_동전0_11047  (0) 2021.03.10
백준_네트워크 복구_2211  (0) 2021.03.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함