[백준 / C++] 트리의 부모 찾기 (실버 2, 11725)

2024. 10. 22. 15:27·코딩테스트/백준 (Study)
728x90
반응형

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

문제

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다.

출력

첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다.

예제 입력 1

7
1 6
6 3
3 5
4 1
2 4
4 7

예제 출력 1

4
6
1
3
1
4

예제 입력 2

12
1 2
1 3
2 4
3 5
3 6
4 7
4 8
5 9
5 10
6 11
6 12

예제 출력 2

1
1
2
3
3
4
4
5
5
6
6

문제 풀이

이 문제는 트리 구조에서 부모 노드를 찾는 전형적인 문제로, DFS(깊이 우선 탐색)를 이용하여 해결할 수 있습니다. DFS를 통해 트리를 순회하면서 각 노드의 부모 노드를 기록하는 방식으로 진행됩니다.

문제를 해결하는 과정을 요약하면 다음과 같습니다:

  1. 트리 입력: 먼저, 간선 정보를 입력받아 트리 구조를 구성합니다. 트리는 무방향 그래프이므로 각 간선은 양방향으로 연결됩니다.
  2. DFS 탐색: DFS를 사용하여 1번 노드부터 시작해 자식 노드를 탐색합니다. 이때 자식 노드가 방문되지 않았으면, 해당 노드의 부모 노드를 기록하고 재귀적으로 계속 탐색을 진행합니다.
  3. 결과 출력: DFS 탐색이 완료되면 2번부터 N번까지 각 노드의 부모 노드를 출력합니다.

코드

더보기
#include <iostream>
#include <vector>

using namespace std;

vector<int> adj[100002];
int n;

int visited[100002];

void DFS(int u)
{
	for (int v : adj[u])
	{
		// 방문 체크
		if (visited[v]) continue;

		visited[v] = u;
		DFS(v);
	}
}

int main()
{
	cin >> n;

	for (int i = 0; i < n - 1; i++)
	{
		int a, b;
		cin >> a >> b;

		adj[a].push_back(b);
		adj[b].push_back(a);
	}

	DFS(1);

	for (int i = 2; i <= n; i++)
		cout << visited[i] << '\n';
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 백준 (Study)' 카테고리의 다른 글

[백준 / C++] 다리 놓기 (실버 5, 1010)  (0) 2024.11.10
[백준 / C++] 뱀과 사다리 게임 (골드 5, 16928)  (0) 2024.10.22
[백준 / C++] 공주님의 정원 (골드3, 2457)  (0) 2024.10.22
[백준 / C++] 파티 (골드3, 1238)  (0) 2024.10.16
[백준 / C++] 최단경로 (골드4, 1753)  (0) 2024.10.14
'코딩테스트/백준 (Study)' 카테고리의 다른 글
  • [백준 / C++] 다리 놓기 (실버 5, 1010)
  • [백준 / C++] 뱀과 사다리 게임 (골드 5, 16928)
  • [백준 / C++] 공주님의 정원 (골드3, 2457)
  • [백준 / C++] 파티 (골드3, 1238)
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    청년취업사관학교
    fsoftobjectpath
    dataasset
    Algorithm
    후기
    프로그래머스
    Unreal Engine
    2018 kakao
    프로세스
    프로젝트
    issac3d
    백준
    2019 kakao
    fruitspuzzle
    CS지식
    코딩테스트
    c#
    delegate
    tsoftobjectptr
    Summer/Winter Coding
    project t.a develop
    unity
    pcce 기출문제
    구현
    C++
    2022 kakao
    ai controller
    unrealengine
    timelessadventure
    sesac
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[백준 / C++] 트리의 부모 찾기 (실버 2, 11725)
상단으로

티스토리툴바