๐Ÿ’  BOJ/Class 4

[BOJ][C++] ๋ฐฑ์ค€ 11725๋ฒˆ: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

์„ ๋‹ฌ 2023. 3. 24. 23:45
๋ฐ˜์‘ํ˜•

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

 

11725๋ฒˆ: ํŠธ๋ฆฌ์˜ ๋ถ€๋ชจ ์ฐพ๊ธฐ

๋ฃจํŠธ ์—†๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ฅผ 1์ด๋ผ๊ณ  ์ •ํ–ˆ์„ ๋•Œ, ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

www.acmicpc.net

 

๋ฌธ์ œ

๋ฃจํŠธ ์—†๋Š” ํŠธ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ฅผ 1์ด๋ผ๊ณ  ์ •ํ–ˆ์„ ๋•Œ, ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N (2 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N-1๊ฐœ์˜ ์ค„์— ํŠธ๋ฆฌ ์ƒ์—์„œ ์—ฐ๊ฒฐ๋œ ๋‘ ์ •์ ์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N-1๊ฐœ์˜ ์ค„์— ๊ฐ ๋…ธ๋“œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ ๋ฒˆํ˜ธ๋ฅผ 2๋ฒˆ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๊ฐ„์„  ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ธ์ ‘ ๊ทธ๋ž˜ํ”„๋กœ ์ €์žฅํ•œ๋‹ค

๋ฃจํŠธ (1) ๋ถ€ํ„ฐ bfs๋กœ ํƒ์ƒ‰ํ•œ๋‹ค

-> ํ˜„์žฌ a๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ ์žˆ๊ณ  ์ž์‹ b๋ฅผ ๋ฐœ๊ฒฌ

-> b๋ฅผ ํ์— ์ง‘์–ด๋„ฃ๊ธฐ ์ „ b์˜ ๋ถ€๋ชจ๋…ธ๋“œ๊ฐ€ a๋ผ๋Š” ์‚ฌ์‹ค์„ ์ž…๋ ฅ (parent[b] = a)

-> ์ถœ๋ ฅ

 

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

using namespace std;

int main() {
    // ์ž…๋ ฅ
    int n, a,b;
    cin >> n;
    vector<vector<int>> graph(n+1);
    for(int i=0; i<n-1; i++) {
        cin >> a >> b;
        graph[a].push_back(b);
        graph[b].push_back(a);
    }
    
    // parent[i] = i์˜ ๋ถ€๋ชจ
    vector<int> parent(n+1);
    
    // bfs
    vector<bool> visit(n+1, false);
    visit[1] = true;
    queue<int> q;
    q.push(1);
    while(!q.empty()) {
        int cur = q.front();
        q.pop();
        for(int i : graph[cur]) {
            if(visit[i])
                continue;
            parent[i] = cur;
            visit[i] = true;
            q.push(i);
        }
    }
    
    // ์ถœ๋ ฅ
    for(int i=2; i<=n; i++)
        cout << parent[i] << "\n";
    
    return 0;
}
๋ฐ˜์‘ํ˜•

'๐Ÿ’  BOJ > Class 4' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ][C++] ๋ฐฑ์ค€ 9465๋ฒˆ: ์Šคํ‹ฐ์ปค  (1) 2023.04.18
[BOJ][C++] ๋ฐฑ์ค€ 1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜•  (0) 2023.02.08