본문 바로가기

Algorithm

10451 순열 사이클 / DFS, BFS

 

정답

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