백준 문제 링크
The Game of Death
- BFS를 사용했다.
- graph와 visited를 만들고,
최소 숫자를 저장할 cnt = 0 을 만들어준다.- bfs 함수 내에서,
cnt를 전역변수화 하고,
큐가 비어있을 때까지 큐에서 원소를 뽑을 때,
- 그 원소가 N과 같다면 cnt를 return 한다.
- 자식 노드를 아직 방문하지 않았다면 방문처리하고,
큐에 자식 노드를 넣고, cnt += 1 해준다.
- bfs(1)로 함수를 실행하고,
- visited[N] == True 이면 print(cnt)
- visited[N] == False 이면 print(0)
from collections import deque
t = int(input())
for _ in range(t):
n = int(input())
start = 1
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
for i in range(1, n + 1):
a = int(input())
graph[i].append(a)
cnt = 0
def bfs(x):
global cnt
queue = deque()
queue.append(x)
visited[x] = True
while queue:
v = queue.popleft()
if v == n:
return cnt
for i in graph[v]:
if not visited[i]:
visited[i] = True
queue.append(i)
cnt += 1
bfs(1)
if visited[n] == True:
print(cnt)
else:
print(0)