728x90

https://solved.ac/

 

 

파이썬

 

실2 순열 사이클

 

 

 

다른 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import sys
def DFS(graph, lst_root, a):
    cnt = 0
    for i in range(a):
        visited = []
        stack = [lst_root[i]]
        while stack:        
            n = stack.pop()
            if n not in visited:       
                if n in graph:
                    visited.append(n)
                    stack += set(graph[n]) - set(visited)
                    del graph[n]
        if visited:
            cnt +=1
    return cnt
 
graph = {}
 
= int(input())
 
for i in range(0,n):
    a = int(sys.stdin.readline())
    ran = list(range(1,a+1))
    lst = list(map(int,sys.stdin.readline().split()))
 
    for i in range(0,a):
            graph[ran[i]] = [lst[i]]
            
    print(DFS(graph,lst,a))
cs

 

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기