[BOJ][C++] ๋ฐฑ์ค€ 1260๋ฒˆ: DFS์™€ BFS

2025. 4. 23. 15:32ยท๐Ÿ’ญ Problem Solving/C++

๋ฌธ์ œ

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

 

๋ฌธ์ œ ์ดํ•ด

  • ๊ทธ๋ž˜ํ”„๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ์™€ BFS๋กœ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ ์ถœ๋ ฅ

 

๋ฌธ์ œ ํ’€์ด

์ฃผ์–ด์ง„ ๊ฐ„์„ ๊ณผ ๋‘ ์ •์ ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ธ์ ‘ ํ–‰๋ ฌ์„ ์ €์žฅํ•œ๋‹ค.

 

๐Ÿ’ก DFS

ํ˜„์žฌ ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ์ˆœ์„œ๋Œ€๋กœ ์žฌ๊ท€ ํƒ์ƒ‰ํ•œ๋‹ค.

์‹œ์ž‘ V → V์™€ ์—ฐ๊ฒฐ๋œ ์ •์  A → A์™€ ์—ฐ๊ฒฐ๋œ ์ •์  B → B์™€ ์—ฐ๊ฒฐ๋œ ์ •์  C ..
  • ์ธ์ ‘ ํ–‰๋ ฌ adj[cur][1 ~ n] ์ˆœํšŒ. ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด dfs(next)
  • dfs ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธ ํ‘œ์‹œ & ์ถœ๋ ฅ ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๊ธฐ
  • ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ณณ์ด๋ฉด return

๐Ÿ’ก BFS

ํ˜„์žฌ ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ๋ชจ๋‘ ํ์— ์‚ฝ์ž…ํ•˜๊ณ  ํ์—์„œ ์ •์ ์„ ๊บผ๋‚ด๋ฉด์„œ ํƒ์ƒ‰ํ•œ๋‹ค.

์‹œ์ž‘ V → V์™€ ์—ฐ๊ฒฐ๋œ ์ •์  A → V์™€ ์—ฐ๊ฒฐ๋œ ์ •์  B → …
A์™€ ์—ฐ๊ฒฐ๋œ ์ •์  A’ → A’์™€ ์—ฐ๊ฒฐ๋œ ์ •์  A’’ → …
B์™€ ์—ฐ๊ฒฐ๋œ ์ •์  B' → B’์™€ ์—ฐ๊ฒฐ๋œ ์ •์  B’’ → …
  • ์‹œ์ž‘ ์ •์ ๋ถ€ํ„ฐ ํ์— ์‚ฝ์ž…ํ•˜์—ฌ ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ์ˆœํšŒํ•œ๋‹ค.
  • ํ์—์„œ ๊บผ๋‚ธ ํ˜„์žฌ ์ •์ ์„ ํƒ์ƒ‰ํ•œ๋‹ค.
    • ์ธ์ ‘ ํ–‰๋ ฌ adj[cur][1 ~ n] ์ˆœํšŒ. ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  ๋ฐฉ๋ฌธ ์•ˆ ํ•œ ์ •์ ์ด๋ฉด ํ์— ์ €์žฅ
    • ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธ ํ‘œ์‹œ & ์ถœ๋ ฅ ๋ฐฐ์—ด์— ์‚ฝ์ž…ํ•˜๊ธฐ

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <queue>

using namespace std;

int n, m, v;
vector<vector<bool>> adj;
vector<bool> visited_dfs;
vector<int> ans_dfs;

void dfs(int cur)
{
    if (visited_dfs[cur])
        return;

    visited_dfs[cur] = true;
    ans_dfs.push_back(cur);
    for (int next = 1; next < n + 1; next++)
    {
        if (adj[cur][next])
            dfs(next);
    }
}

vector<int> bfs()
{
    queue<int> q;
    vector<int> visited_bfs(n + 1, false);
    vector<int> ans_bfs;

    q.push(v);
    visited_bfs[v] = true;

    while(!q.empty()){
        int cur = q.front();
        ans_bfs.push_back(cur);
        q.pop();
        
        for(int next = 1; next < n + 1; next++){
            if (!adj[cur][next] || visited_bfs[next])
                continue;
            visited_bfs[next] = true;
            q.push(next);
        }
    }

    return ans_bfs;
}

int main()
{
    // ์ž…๋ ฅ
    int a, b;
    cin >> n >> m >> v;

    adj.assign(n + 1, vector<bool>(n + 1, false));
    visited_dfs.assign(n + 1, false);

    for (int i = 0; i < m; i++)
    {
        cin >> a >> b;
        adj[a][b] = true;
        adj[b][a] = true;
    }

    // ์—ฐ์‚ฐ
    dfs(v);

    // ์ถœ๋ ฅ
    for (int i : ans_dfs)
        cout << i << ' ';
    cout << '\n';
    for (int i: bfs())
        cout << i << ' ';

    return 0;
}

 

'๐Ÿ’ญ Problem Solving > C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ][C++] ๋ฐฑ์ค€ 1890๋ฒˆ: ์ ํ”„  (0) 2025.04.23
[BOJ][C++] ๋ฐฑ์ค€ 2579๋ฒˆ: ๊ณ„๋‹จ์˜ค๋ฅด๊ธฐ  (0) 2025.04.23
[BOJ][C++] ๋ฐฑ์ค€ 2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ  (0) 2024.11.11
[BOJ][C++] ๋ฐฑ์ค€ 3085๋ฒˆ: ์‚ฌํƒ• ๊ฒŒ์ž„  (0) 2024.10.30
[BOJ][C++] ๋ฐฑ์ค€ 1789๋ฒˆ: ์ˆ˜๋“ค์˜ ํ•ฉ  (0) 2024.10.29
'๐Ÿ’ญ Problem Solving/C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ][C++] ๋ฐฑ์ค€ 1890๋ฒˆ: ์ ํ”„
  • [BOJ][C++] ๋ฐฑ์ค€ 2579๋ฒˆ: ๊ณ„๋‹จ์˜ค๋ฅด๊ธฐ
  • [BOJ][C++] ๋ฐฑ์ค€ 2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ
  • [BOJ][C++] ๋ฐฑ์ค€ 3085๋ฒˆ: ์‚ฌํƒ• ๊ฒŒ์ž„
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    knapsack
    ๋งต
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    .h
    ํŠธ๋ฆฌ
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    La Piscine
    makefile
    react
    BFS
    CSS
    git
    java
    ์ •๋ ฌ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    HTML
    CS
    unity
    C
    42๊ฒฝ์‚ฐ
    swea
    ๋ฐฑ์ค€
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    VR
    github
    dfs
    dynamic programming
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๊ตฌํ˜„
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[BOJ][C++] ๋ฐฑ์ค€ 1260๋ฒˆ: DFS์™€ BFS
์ƒ๋‹จ์œผ๋กœ

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