티스토리 뷰
728x90
반응형
문제
https://www.acmicpc.net/problem/10451
코드
import collections
t = int(input())
queue = collections.deque()
def bfs(index):
queue.append(index)
while queue:
cur = queue.popleft()
visited[cur] = True
if visited[graph[cur]] == False:
visited[graph[cur]] = True
queue.append(graph[cur])
for i in range(t):
n = int(input())
graph = [0]+list(map(int, input().split()))
visited = [0 for _ in range(n+1)]
count = 0
for j in range(1, n+1):
if visited[j] == False:
bfs(j)
count += 1
print(count)
visited로 방문체크를 해줘서 모든 정점노드들을 for문으로 돌아 방문하지 않은 정점일 경우 bfs를 실행한다.
즉, bfs 실행 횟수가 사이클이 생긴 횟수와 같아진다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 3190번, 뱀 (Python) (0) | 2021.08.12 |
---|---|
[백준] 3055번, 탈출 (Python) (0) | 2021.08.12 |
[백준] 1389번, 케빈 베이컨의 6단계 법칙 (Python) (0) | 2021.08.07 |
[백준] 2193번, 이친수 (Python) (0) | 2021.08.03 |
[백준] 1912번, 연속합 (Python) (0) | 2021.07.30 |
댓글