BOJ 11725 - 트리의 부모 찾기(C++) / Team Fortune Drill Week1

G1FTED_13·2025년 4월 11일

BOJ

목록 보기
8/20

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

문제를 푼 날짜: 2025. 04. 11

#graphs #graph_traversal #trees #bfs #dfs


[Figure 1] 문제를 이해하는 과정에서 싸지방 윈도우의 그림판을 이용해서 그려봤다. 상당한 퀄리티이다.

문제를 푼 날짜: 2025. 04. 11

내 풀이

#include <iostream>
#include <vector>
#include <queue>
using namespace std;

const int MAX = 100000;
vector<int> adj_list[MAX + 1];
int Parent[MAX + 1]; // 아직 부모노드 못 찾은 상태(초기값) == 0
queue<int> q;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    cin >> N;

    // 인접 리스트 업데이트
    for(int i = 0; i < N; i++){
        int tmp1,tmp2;
        cin >> tmp1 >> tmp2;
        adj_list[tmp1].push_back(tmp2);
        adj_list[tmp2].push_back(tmp1);
    }

    int x = 1;
    for(auto &k : adj_list[1]){
        Parent[k] = 1;
        q.push(k);
    }

    while(!q.empty()){
        x = q.front();
        q.pop();

        for(auto &k: adj_list[x]){
            if(Parent[k] == 0){
                Parent[k] = x;
                q.push(k);
            }
        }
    }

    for(int i = 2; i <= N; i++){
        cout << Parent[i] << '\n';
    }
    return 0;
}

이번 문제는 피드백할 점이 딱히 없었다 ㅎㅎ

profile
어제보다, 더

0개의 댓글