문제풀이/DFS & BFS
[파이썬] [DFS] 백준 1068 트리
승무_
2022. 5. 11. 10:47
문제
https://www.acmicpc.net/problem/1068
1068번: 트리
첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다
www.acmicpc.net
코드
n=int(input())
graph=[[]*n for _ in range(n)]
array=list(map(int, input().split()))
for i,k in enumerate(array):
if k>=0:
graph[k].append(i)
else:
start=i
re=int(input())
if re==start:
print(0)
exit(0)
result=0
find=0
for i in range(n):
for j in range(len(graph[i])):
if re==graph[i][j]:
find=i
graph[find].remove(re)
def dfs(x):
global result
if not graph[x]:
result+=1
return
for i in graph[x]:
dfs(i)
dfs(start)
print(result)