백준 10451 순열 사이클

gmlwlswldbs·2022년 1월 9일
0

코딩테스트

목록 보기
101/130
from collections import deque

t = int(input())
for _ in range(t):
    n = int(input())
    l = list(map(int, input().split()))
    g = [[] for _ in range(n)]
    for i in range(n):
        g[i].append(l[i]-1)

    check = [-1] * n
    def dfs(v):
        q = deque()
        q.append(v)
        check[v] = 0
        while q:
            x = q.popleft()
            for y in g[x]:
                if check[y] == -1:
                    check[y] = check[x] + 1
                    q.append(y)
    cnt = 0
    for i in range(n):
        if check[i] == -1:
            dfs(i)
            cnt += 1
    print(cnt)

완전탐색 기본 문제

0개의 댓글