문제
https://www.acmicpc.net/problem/1068
코드
import sys
from collections import deque
sys.setrecursionlimit(10**9)
def Input_Data():
input = sys.stdin.readline
N = int(input())
node = list(map(int, input().split()))
erase = int(input()) #지울 노드
adj = [ [] * (1) for _ in range(N)]
# 간선 저장
for idx, v in enumerate(node):
if v == -1 : # root
root = idx
elif idx == erase: # 지울 노드의 간선은 스킵
continue
else:
adj[v].append(idx)
return N, node, erase, adj, root
def Dfs(cur):
global ans
if len(adj[cur]) == 0:
ans +=1
visited[cur] = 1
return
for y in adj[cur]:
if y == -1 : return
if visited[y] == 0:
visited[y] = 1
Dfs(y)
N, node, erase, adj, root = Input_Data()
adj[erase] = [-1]
visited = [0] * (N)
visited[root] = 1
ans = 0
Dfs(root)
print(ans)
'Algorithm' 카테고리의 다른 글
[백준 1504] 특정한 최단 경로 (0) | 2024.09.01 |
---|---|
[백준 6593] 상범 빌딩 (0) | 2024.08.31 |
[백준 10026] 적록색약 (2) | 2024.07.24 |
[백준 2578] 빙고 (0) | 2024.02.10 |
[백준 2583] 영역 구하기 (1) | 2024.02.04 |