11725. 트리의 부모찾기
11725번: 트리의 부모 찾기
루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.
www.acmicpc.net
- 내 풀이
- 시간 초과
from collections import defaultdict
N=int(input())
lst=defaultdict(list)
result=defaultdict(list)
start=1
stack=[]
visited=[]
for _ in range(N-1):
x,y=map(int,input().split())
lst[x].append(y)
lst[y].append(x)
def dfs(stack, start, visited):
stack=[start]
while stack:
s= stack.pop()
if s not in visited:
visited.append(s)
for ls in lst[s]:
if ls not in visited:
result[ls]=s #자식인덱스 부모삽입
stack.append(ls)
dfs(stack, start, visited)
#defaultdict 라서 value로 가져와야함
for i in range(2,N+1):
print(result[i])
- 다시풀기
- parent값이 입력되었는지 안되었는지로 visited 대신함
from collections import deque
from collections import defaultdict
N=int(input())
parent=1
stack=deque()
lst=defaultdict(list)
result=defaultdict(list)
for _ in range(N-1):
x,y=map(int,input().split())
lst[x].append(y)
lst[y].append(x)
def dfs(stack,parent):
stack=[parent]
result[1]=1
while stack:
s=stack.pop()
for ls in lst[s]:
if result[ls]==[]:
result[ls]=s
stack.append(ls)
dfs(stack,parent)
#defaultdict 라서 value로 가져와야함
for i in range(2,N+1):
print(result[i])'코딩테스트 > BOJ' 카테고리의 다른 글
| [백준 15686] 치킨 배달 (0) | 2023.02.22 |
|---|---|
| [백준] 트리의 부모찾기 (0) | 2023.02.19 |
| [백준] [실버2] 1260. DFS와 BFS (0) | 2023.02.18 |
| [백준] 2908.상수 (0) | 2023.02.17 |
| [백준] 1157. 단어 공부 (0) | 2023.02.16 |