[파이썬/python] 백준 11725 - 트리의 부모 찾기

2025. 1. 31. 18:43·알고리즘
반응형

문제

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


문제 설명

  1. 루트 없는 트리가 주어진다.
  2. 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구해라.

단순 DFS를 사용하여 각 노드의 부모를 구하는 문제이다.

풀이

  1. 루트 노드가 1번이므로 1번 노드부터 DFS탐색을 시작한다. 
  2. 현재 방문한 노드를 이전 노드의 값(부모 노드)으로 방문 처리한다.
  3. 2번 노드부터 순차적으로 부모를 출력한다.

코드

import sys
sys.setrecursionlimit(10**5)
input = sys.stdin.readline

n = int(input())
graph = [[] for _ in range(n+1)]
visited = [0 for _ in range(n+1)]

for i in range(n-1):
    v1,v2 = map(int,input().split())
    graph[v1].append(v2)
    graph[v2].append(v1)

def dfs(v1):
    for v2 in graph[v1]:
        if not visited[v2]:
            visited[v2] = v1
            dfs(v2)

dfs(1)

for v in visited[2:]:
    print(v)

시간복잡도

  • 인접 리스트를 통한 DFS의 시간복잡도는 $O(V+E)$이다.
  • 노드의 개수는 최대 $10^5$ 간선의 개수는 최대 $10^5-1$
  • 따라서 최악의 경우 시간복잡도는 약$O(2*10^5-1)$이다.
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 6593 - 상범빌딩  (0) 2025.02.02
[파이썬/python] 백준 18126 - 너구리 구구  (0) 2025.02.01
[파이썬/python] 백준 29813- 최애의 팀원  (0) 2025.01.24
[파이썬/python] 백준 23757 - 아이들과 선물 상자  (0) 2025.01.24
[파이썬/python] 백준 1927 - 최소 힙  (0) 2025.01.21
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 6593 - 상범빌딩
  • [파이썬/python] 백준 18126 - 너구리 구구
  • [파이썬/python] 백준 29813- 최애의 팀원
  • [파이썬/python] 백준 23757 - 아이들과 선물 상자
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (144)
      • 알고리즘 (124)
      • Java (2)
      • 자기개발 (18)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    java
    springboot
    백준
    python
    Redis
    인프런
    async
    OS
    컴퓨터 구조
    알고리즘
    작심삼일 챌린지
    파이썬
    SMTP
    컴퓨터구조
    completablefuture
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 11725 - 트리의 부모 찾기
상단으로

티스토리툴바