티스토리 뷰

728x90

문제

www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

 

소스 코드

import sys
input = sys.stdin.readline

n = int(input())
tree = [[] for i in range(n+1)]

for i in range(n-1):
    a, b = list(map(int, input().split()))
    tree[a].append(b) //서로 연결해주기
    tree[b].append(a)

que = [1] //1부터 시작이므로 시작 전에 큐에 1을 넣어준다.
visit = [0 for i in range(n+1)] //방문된 곳인지 확인하기 위함!
result = {} //result[4] 는 4번 노드의 부모가 담긴다.

while que:
    now = que.pop(0) //현재 가르키는 노드 처음엔 1이 온다.
    for i in tree[now]: //tree[1] 에 있는 요소를 꺼낸다. tree[1]에는 4와 6
        if visit[i] == 0: //방문한 적이 없다면,
            result[i] = now //4번 노드에 대한 출력값으로 부모인 now=1 삽입
            visit[i] = 1 //방문했으므로 1으로 바꿔준다.
            que.append(i) //큐에 추가해 다음 탐색을 이어가도록 한다.

for i in range(2, n+1):
    print(result[i]) 

 

반응형