Notice
Recent Posts
Recent Comments
Today
Total
01-10 22:06
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Partially Committed

[๋ฐฑ์ค€ 1389] ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™ ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm || ๋ฌธ์ œํ’€์ด/PS

[๋ฐฑ์ค€ 1389] ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™

WonderJay 2023. 1. 19. 14:29
728x90
๋ฐ˜์‘ํ˜•
SMALL

https://www.acmicpc.net/problem/1389

 

1389๋ฒˆ: ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™

์ฒซ์งธ ์ค„์— ์œ ์ €์˜ ์ˆ˜ N (2 ≤ N ≤ 100)๊ณผ ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ M (1 ≤ M ≤ 5,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์นœ๊ตฌ ๊ด€๊ณ„๋Š” A์™€ B๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, A์™€ B๊ฐ€ ์นœ๊ตฌ๋ผ๋Š” ๋œป

www.acmicpc.net

 

๋”๋ณด๊ธฐ

๋ฌธ์ œ

์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™์— ์˜ํ•˜๋ฉด ์ง€๊ตฌ์— ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ์ตœ๋Œ€ 6๋‹จ๊ณ„ ์ด๋‚ด์—์„œ ์„œ๋กœ ์•„๋Š” ์‚ฌ๋žŒ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค. ์ผ€๋นˆ ๋ฒ ์ด์ปจ ๊ฒŒ์ž„์€ ์ž„์˜์˜ ๋‘ ์‚ฌ๋žŒ์ด ์ตœ์†Œ ๋ช‡ ๋‹จ๊ณ„ ๋งŒ์— ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ์ž„์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ „ํ˜€ ์ƒ๊ด€์—†์„ ๊ฒƒ ๊ฐ™์€ ์ธํ•˜๋Œ€ํ•™๊ต์˜ ์ด๊ฐ•ํ˜ธ์™€ ์„œ๊ฐ•๋Œ€ํ•™๊ต์˜ ๋ฏผ์„ธํฌ๋Š” ๋ช‡ ๋‹จ๊ณ„๋งŒ์— ์ด์–ด์งˆ ์ˆ˜ ์žˆ์„๊นŒ?

์ฒœ๋ฏผํ˜ธ๋Š” ์ด๊ฐ•ํ˜ธ์™€ ๊ฐ™์€ ํ•™๊ต์— ๋‹ค๋‹ˆ๋Š” ์‚ฌ์ด์ด๋‹ค. ์ฒœ๋ฏผํ˜ธ์™€ ์ตœ๋ฐฑ์ค€์€ Baekjoon Online Judge๋ฅผ ํ†ตํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ตœ๋ฐฑ์ค€๊ณผ ๊น€์„ ์˜์€ ๊ฐ™์ด Startlink๋ฅผ ์ฐฝ์—…ํ–ˆ๋‹ค. ๊น€์„ ์˜๊ณผ ๊น€๋„ํ˜„์€ ๊ฐ™์€ ํ•™๊ต ๋™์•„๋ฆฌ ์†Œ์†์ด๋‹ค. ๊น€๋„ํ˜„๊ณผ ๋ฏผ์„ธํฌ๋Š” ๊ฐ™์€ ํ•™๊ต์— ๋‹ค๋‹ˆ๋Š” ์‚ฌ์ด๋กœ ์„œ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ์ฆ‰, ์ด๊ฐ•ํ˜ธ-์ฒœ๋ฏผํ˜ธ-์ตœ๋ฐฑ์ค€-๊น€์„ ์˜-๊น€๋„ํ˜„-๋ฏผ์„ธํฌ ์™€ ๊ฐ™์ด 5๋‹จ๊ณ„๋งŒ ๊ฑฐ์น˜๋ฉด ๋œ๋‹ค.

์ผ€๋นˆ ๋ฒ ์ด์ปจ์€ ๋ฏธ๊ตญ ํ—๋ฆฌ์šฐ๋“œ ์˜ํ™”๋ฐฐ์šฐ๋“ค ๋ผ๋ฆฌ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ๊ฒŒ์ž„์„ ํ–ˆ์„๋•Œ ๋‚˜์˜ค๋Š” ๋‹จ๊ณ„์˜ ์ด ํ•ฉ์ด ๊ฐ€์žฅ ์ ์€ ์‚ฌ๋žŒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์˜ค๋Š˜์€ Baekjoon Online Judge์˜ ์œ ์ € ์ค‘์—์„œ ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ฐพ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ๊ฒŒ์ž„์„ ํ–ˆ์„ ๋•Œ, ๋‚˜์˜ค๋Š” ๋‹จ๊ณ„์˜ ํ•ฉ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, BOJ์˜ ์œ ์ €๊ฐ€ 5๋ช…์ด๊ณ , 1๊ณผ 3, 1๊ณผ 4, 2์™€ 3, 3๊ณผ 4, 4์™€ 5๊ฐ€ ์นœ๊ตฌ์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

1์€ 2๊นŒ์ง€ 3์„ ํ†ตํ•ด 2๋‹จ๊ณ„ ๋งŒ์—, 3๊นŒ์ง€ 1๋‹จ๊ณ„, 4๊นŒ์ง€ 1๋‹จ๊ณ„, 5๊นŒ์ง€ 4๋ฅผ ํ†ตํ•ด์„œ 2๋‹จ๊ณ„ ๋งŒ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๋Š” 2+1+1+2 = 6์ด๋‹ค.

2๋Š” 1๊นŒ์ง€ 3์„ ํ†ตํ•ด์„œ 2๋‹จ๊ณ„ ๋งŒ์—, 3๊นŒ์ง€ 1๋‹จ๊ณ„ ๋งŒ์—, 4๊นŒ์ง€ 3์„ ํ†ตํ•ด์„œ 2๋‹จ๊ณ„ ๋งŒ์—, 5๊นŒ์ง€ 3๊ณผ 4๋ฅผ ํ†ตํ•ด์„œ 3๋‹จ๊ณ„ ๋งŒ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๋Š” 2+1+2+3 = 8์ด๋‹ค.

3์€ 1๊นŒ์ง€ 1๋‹จ๊ณ„, 2๊นŒ์ง€ 1๋‹จ๊ณ„, 4๊นŒ์ง€ 1๋‹จ๊ณ„, 5๊นŒ์ง€ 4๋ฅผ ํ†ตํ•ด 2๋‹จ๊ณ„ ๋งŒ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๋Š” 1+1+1+2 = 5์ด๋‹ค.

4๋Š” 1๊นŒ์ง€ 1๋‹จ๊ณ„, 2๊นŒ์ง€ 3์„ ํ†ตํ•ด 2๋‹จ๊ณ„, 3๊นŒ์ง€ 1๋‹จ๊ณ„, 5๊นŒ์ง€ 1๋‹จ๊ณ„ ๋งŒ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค. 4์˜ ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๋Š” 1+2+1+1 = 5๊ฐ€ ๋œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ 5๋Š” 1๊นŒ์ง€ 4๋ฅผ ํ†ตํ•ด 2๋‹จ๊ณ„, 2๊นŒ์ง€ 4์™€ 3์„ ํ†ตํ•ด 3๋‹จ๊ณ„, 3๊นŒ์ง€ 4๋ฅผ ํ†ตํ•ด 2๋‹จ๊ณ„, 4๊นŒ์ง€ 1๋‹จ๊ณ„ ๋งŒ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค. 5์˜ ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๋Š” 2+3+2+1 = 8์ด๋‹ค.

5๋ช…์˜ ์œ ์ € ์ค‘์—์„œ ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์€ 3๊ณผ 4์ด๋‹ค.

BOJ ์œ ์ €์˜ ์ˆ˜์™€ ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์œ ์ €์˜ ์ˆ˜ N (2 ≤ N ≤ 100)๊ณผ ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ M (1 ≤ M ≤ 5,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์นœ๊ตฌ ๊ด€๊ณ„๋Š” A์™€ B๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, A์™€ B๊ฐ€ ์นœ๊ตฌ๋ผ๋Š” ๋œป์ด๋‹ค. A์™€ B๊ฐ€ ์นœ๊ตฌ์ด๋ฉด, B์™€ A๋„ ์นœ๊ตฌ์ด๋ฉฐ, A์™€ B๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ์นœ๊ตฌ ๊ด€๊ณ„๋Š” ์ค‘๋ณต๋˜์–ด ๋“ค์–ด์˜ฌ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์นœ๊ตฌ๊ฐ€ ํ•œ ๋ช…๋„ ์—†๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค. ๋˜, ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์นœ๊ตฌ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋˜์–ด์ ธ ์žˆ๋‹ค. ์‚ฌ๋žŒ์˜ ๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ N๊นŒ์ง€์ด๋ฉฐ, ๋‘ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— BOJ์˜ ์œ ์ € ์ค‘์—์„œ ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ ๋ช…์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 

5 5
1 3
1 4
4 5
4 3
3 2

์˜ˆ์ œ ์ถœ๋ ฅ 1 

3

์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ณฐ๊ณฐํžˆ ์ƒ๊ฐํ•ด๋ณด์ž.

 

A ํ•™์ƒ๊ณผ C ํ•™์ƒ์€ ์„œ๋กœ ๋ชจ๋ฅด์ง€๋งŒ,

 

A ํ•™์ƒ์€ B ์™€ ์นœ๊ตฌ์ด๊ณ  C ํ•™์ƒ๋˜ํ•œ B ์™€ ์นœ๊ตฌ๋ผ๋ฉด,

 

A ํ•™์ƒ์€ ๊ฑด๋„ˆ๊ฑด๋„ˆ(A-B, B-C : 2) C ์™€ ์นœ๊ตฌ์ด๋‹ค. 

 

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ๋ช‡ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์„œ ์นœ๊ตฌ์ธ์ง€๋ฅผ ๋ถ€๋ถ„ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋ผ๊ณ  ์ •์˜ํ•˜๋ฉด

 

๋ถ€๋ถ„ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋Š” 2 ์ด๋‹ค.

 

A ํ•™์ƒ์ด ๋‚˜๋จธ์ง€ ํ•™์ƒ๋“ค ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๋ถ€๋ถ„ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ ๋ชจ๋‘ ๋”ํ•œ ๊ฒƒ์ด A ํ•™์ƒ์˜ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜์ด๋‹ค.

 

์„œ๋กœ ์นœ๊ตฌ ๊ด€๊ณ„์ธ ๋…ธ๋“œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ 1 ์ด๋ผ๊ณ  ์ •์˜ํ•˜๋ฉด,

 

๋ถ€๋ถ„ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋Š” ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๋˜๋ฉฐ,

 

i ๋ฒˆ์งธ ํ•™์ƒ์˜ ์ผ€๋นˆ ๋ฒ ์ด์ปจ ์ˆ˜๋Š” i ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ ๊นŒ์ง€์˜ ๋ชจ๋“  ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์ด๋‹ค.

 

์ด๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งค์šฐ ์ž‘์œผ๋ฏ€๋กœ, ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•˜๋‹ค.

 

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    static int graph[][];
    static int INF = 500000;

    public static void main(String[] args) throws IOException {
        //System.setIn(new FileInputStream("src/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer stk = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(stk.nextToken());
        int m = Integer.parseInt(stk.nextToken());

        graph = new int[n + 1][n + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) {
                if (i == j)
                    graph[i][j] = 0;
                else graph[i][j] = INF;
            }
        }

        for (int i = 0; i < m; i++) {
            stk = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(stk.nextToken());
            int b = Integer.parseInt(stk.nextToken());
            graph[a][b] = 1;
            graph[b][a] = 1;
        }

        // ํ”Œ๋กœ์ด๋“œ - ์›Œ์…œ
        for (int k = 1; k <= n; k++) {
            for (int s = 1; s <= n; s++) {
                for (int e = 1; e <= n; e++) {
                    if (graph[s][e] > graph[s][k] + graph[k][e])
                        graph[s][e] = graph[s][k] + graph[k][e];
                }
            }
        }
        int[] num = new int[n + 1];
        int min = INF;
        for (int i = 1; i <= n; i++) {
            int sum = 0;
            for (int j = 1; j <= n; j++) {
                sum += graph[i][j];
            }
            num[i] = sum;
            if(sum < min)
                min = sum;
        }
        for(int i = 1 ; i<= n; i++)
            if(num[i]==min){
                bw.write(i+"\n");
                break;
            }
        bw.flush();
        bw.close();
    }
}

728x90
๋ฐ˜์‘ํ˜•
LIST
Comments