문제
https://www.acmicpc.net/problem/2668
코드
n=int(input())
graph=[[] for _ in range(n+1)]
for i in range(1,n+1):
t=int(input())
graph[i].append(t)
answer=set()
def dfs(first,second,num):
#문제 그림의 첫번째 줄
first.add(num)
#문제 그림의 두번째 줄
second.add(graph[num][0])
if graph[num][0] in first:
#첫번째 줄 집합과 두번째 줄 집합이 같다면
if first==second:
answer.update(first)
return True
else:
return False
else:
dfs(first,second,graph[num][0])
for i in range(1,n+1):
dfs(set(),set(),i)
print(len(answer))
print(*sorted(list(answer)),sep="\n")
'문제풀이 > DFS & BFS' 카테고리의 다른 글
[JAVA] [BFS] Pro 아이템 줍기 (0) | 2023.06.18 |
---|---|
[파이썬] [BFS] 백준 4179 불! (0) | 2023.02.21 |
[파이썬] [BFS] 백준 27211 도넛 행성 (0) | 2023.01.17 |
@[파이썬] [DFS] 백준 2468 안전 영역 (0) | 2022.12.29 |
@[파이썬] [DFS] 백준 1012 유기농 배추 (0) | 2022.12.27 |