문제
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)
'문제풀이 > DFS & BFS' 카테고리의 다른 글
[파이썬] [DFS] 백준 14500 테트로미노 (0) | 2022.05.15 |
---|---|
[파이썬] [BFS] 백준 1707 이분 그래프 (0) | 2022.05.11 |
[PyPy] [DFS] 백준 2580 스도쿠 (0) | 2022.05.05 |
[파이썬] [DFS] 백준 1987 알파벳 (0) | 2022.05.02 |
[파이썬] [BFS] 백준 2206 벽 부수고 이동하기 (0) | 2022.04.09 |