🔻Algorithm/Baekjoon

[Baekjoon] 백준 10451 순열 사이클 Python

_니지 2024. 5. 10. 22:50

https://www.acmicpc.net/problem/10451

 

import sys
sys.setrecursionlimit(10**6)

def dfs(graph, visited, v):
    visited[v] = 1

    for i in graph[v]:
        if not visited[i]:
            dfs(graph, visited, i)


tc = int(sys.stdin.readline())
for _ in range(tc):

    num = int(sys.stdin.readline())
    temp = [int(x) for x in sys.stdin.readline().split(" ")]

	# 그래프 세팅
    graph = [[] for _ in range(num+1)]
    visited = [0] * (num+1)
    for i in range(1, len(graph)):
        graph[i].append(temp[i-1])

	# 사이클 찾기
    cnt = 0
    for i in range(1, len(graph)):
        if not visited[i]:
            dfs(graph, visited, i)
            cnt += 1

    print(cnt)
728x90
반응형