b2644. ์ดŒ์ˆ˜๊ณ„์‚ฐ

2025. 5. 31. 21:12ยทAlgorithm & Data Structures/BOJ

 

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

 

 

 

๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง ์ž๋ฐ”๋กœ ํ‘ธ๋Š” ์ดŒ์ˆ˜ ๊ณ„์‚ฐ (๋ฐฑ์ค€ 2644)

 


 

๐Ÿ“Œ ๋ฌธ์ œ ๊ฐœ์š”

 

  • ์‚ฌ๋žŒ ์ˆ˜ n๊ณผ ๋‘ ์‚ฌ๋žŒ x, y๊ฐ€ ์ฃผ์–ด์ง
  • l๊ฐœ์˜ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋„ ์ž…๋ ฅ๋จ
  • ๋‘ ์‚ฌ๋žŒ ๊ฐ„์˜ ์ดŒ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ

 

 

์ดŒ์ˆ˜๋ž€?

 

  • ๋ถ€๋ชจ์™€ ์ž์‹์€ 1์ดŒ, ํ˜•์ œ๋Š” 2์ดŒ
  • ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋งŒ ์ฃผ์–ด์ง€๋ฏ€๋กœ ๊ทธ๋ž˜ํ”„๋Š” ๋ฌด๋ฐฉํ–ฅ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

 


 

๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

9
7 3
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6

→ 7๊ณผ 3์˜ ๊ด€๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Œ:

7 → 2 → 1 → 3 → ์ด 3์ดŒ

 

 

์˜ˆ์ œ ์ถœ๋ ฅ

3

 


 

๐Ÿง  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹

 

  • ๊ฐ ์‚ฌ๋žŒ์„ ์ •์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์–‘๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ
  • DFS๋กœ x๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ y์— ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰
  • ํƒ์ƒ‰ ์ค‘ ๋ฐฉ๋ฌธํ•œ ๊นŠ์ด cnt๋ฅผ ํ†ตํ•ด ์ดŒ์ˆ˜๋ฅผ ๊ตฌํ•จ

 


 

๐Ÿ” ์ „์ฒด ์ฝ”๋“œ

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

public class Main {
    static List<Integer>[] relation;
    static boolean[] checked;
    static int res = -1;

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        relation = new ArrayList[n+1];
        checked = new boolean[n+1];
        for(int i = 1; i <= n; i++) {
            relation[i] = new ArrayList<>();
        }

        StringTokenizer st = new StringTokenizer(br.readLine());
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());

        int l = Integer.parseInt(br.readLine());
        for(int i = 0; i < l; i++) {
            st = new StringTokenizer(br.readLine());
            int p = Integer.parseInt(st.nextToken());
            int c = Integer.parseInt(st.nextToken());
            relation[p].add(c);
            relation[c].add(p);
        }

        dfs(x, y, 0);
        System.out.println(res);
    }

    static void dfs(int start, int end, int cnt) {
        if(start == end) {
            res = cnt;
            return;
        }

        checked[start] = true;
        for(int next : relation[start]) {
            if(!checked[next]) {
                dfs(next, end, cnt+1);
            }
        }
    }
}

 


 

๐Ÿ” ์ฝ”๋“œ ํ•ด์„ค

๊ตฌ๋ฌธ ์„ค๋ช…
relation[p].add(c); relation[c].add(p); ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ
dfs(x, y, 0) DFS๋กœ x๋ถ€ํ„ฐ y๊นŒ์ง€ ์ดŒ์ˆ˜ ํƒ์ƒ‰
if(start == end) ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ํ˜„์žฌ ์ดŒ์ˆ˜๋ฅผ ์ €์žฅ
checked[start] ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ์ฒดํฌ๋กœ ๋ฌดํ•œ ์žฌ๊ท€ ๋ฐฉ์ง€

 


 

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ ์š”์•ฝ

 

  • ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์–‘๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
  • DFS๋ฅผ ํ†ตํ•ด ๊ฑฐ๋ฆฌ(=์ดŒ์ˆ˜)๋ฅผ ๋ˆ„์ ํ•˜๋ฉฐ ํƒ์ƒ‰
  • ๋‘ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด res๋Š” -1๋กœ ์œ ์ง€๋จ
 

 

'Algorithm & Data Structures > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

b1002. ํ„ฐ๋ ›  (0) 2025.05.31
b17413. ์ดŒ์ˆ˜๊ณ„์‚ฐ  (0) 2025.05.31
b1068. ํŠธ๋ฆฌ  (0) 2025.05.31
b9328. ์—ด์‡   (0) 2025.05.21
b10942. ํŽ ๋ฆฐ๋“œ๋กฌ?  (0) 2025.05.20
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b1002. ํ„ฐ๋ ›
  • b17413. ์ดŒ์ˆ˜๊ณ„์‚ฐ
  • b1068. ํŠธ๋ฆฌ
  • b9328. ์—ด์‡ 
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (326)
      • Algorithm & Data Structures (246)
        • BOJ (104)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (27)
        • SQL (21)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Stack
    SQL
    dfs
    algorithm
    ์ „์œ„์ˆœํšŒ
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ํ›„์œ„์ˆœํšŒ
    ํˆฌํฌ์ธํ„ฐ
    ์Šคํƒ
    programmers
    DynamicProgramming
    unionfind
    PriorityQueue
    Dijkstra
    ๊ฒฝ๋กœ์••์ถ•
    ๊ตฌํ˜„
    Java
    binarySearch
    Union-Find
    ์ด๋ถ„ํƒ์ƒ‰
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    BFS
    baekjoon
    ๋ฐฑ์ค€
    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    ๊ณจ๋“œ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋™์ ๊ณ„ํš๋ฒ•
    dp
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b2644. ์ดŒ์ˆ˜๊ณ„์‚ฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”