알고리즘 수업 - 너비 우선 탐색 3 24446

PublicMinsu·2023년 9월 4일
0

문제

접근 방법

BFS의 기초를 알려주기 위한 문제이다.
큐를 활용하여 BFS를 구현하고 깊이를 측정하면 된다.

코드

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    int N, M, R, u, v;
    cin >> N >> M >> R;
    vector<vector<int>> graph(N + 1, vector<int>());
    vector<int> depth(N + 1, -1);
    while (M--)
    {
        cin >> u >> v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    queue<int> q;
    q.push(R);
    depth[R] = 0;
    while (!q.empty())
    {
        int cur = q.front();
        q.pop();
        for (int next : graph[cur])
        {
            if (depth[next] != -1)
                continue;
            depth[next] = depth[cur] + 1;
            q.push(next);
        }
    }
    for (int i = 1; i <= N; ++i)
        cout << depth[i] << "\n";
    return 0;
}

풀이

초기 깊이를 -1로 하고 첫 방문의 깊이를 0으로 한 뒤 다음 방문은 1씩 증가시키면 원하는 값을 구할 수 있다.

profile
연락 : publicminsu@naver.com

0개의 댓글