정답
def DFS(g, start, visited):
visited[start] = True
for i in g[start]:
if visited[i] is False:
DFS(g, i, visited)
t = int(input())
ans_arr = []
for i in range(t):
n = int(input())
graph = []
for _ in range(n + 1):
graph.append([])
v = list(map(int, input().split()))
for i in range(1, n + 1):
graph[i].append(v[i - 1])
visited = [False] * (n + 1)
ans = 0
for i in range(1, n + 1):
if visited[i] is False:
DFS(graph, i, visited)
ans = ans + 1
ans_arr.append(ans)
for i in ans_arr:
print(i)
'Algorithm' 카테고리의 다른 글
2644 촌수계산 / DFS, BFS (0) | 2025.05.17 |
---|---|
1389 케빈 베이컨의 6단계 법칙 / DFS, BFS (0) | 2025.05.16 |
1260 DFS와 BFS / DFS, BFS (0) | 2025.03.23 |
11724 연결 요소의 개수 / DFS, BFS (0) | 2025.03.23 |
DFS와 BFS (0) | 2025.03.23 |