T = int(input())
visited = [False for _ in range(101)]
answer = 0
graph = [[] for _ in range(101)]
def dfs(idx):
global graph
visited[idx] = True
for item in graph[idx]:
if not visited[item]:
dfs(item)
def init():
global answer, visited, graph
answer = 0
graph = [[] for _ in range(101)]
for j in range(101):
visited[j] = False
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
init()
n, m = map(int, input().split())
for i in range(m):
first, sec = map(int, input().split())
graph[first].append(sec)
graph[sec].append(first)
# 탐색
for i in range(1, n + 1):
if not visited[i]:
dfs(i)
answer += 1
print("#" + str(test_case) + " " + str(answer))
dfs/bfs
를 사용해서 몇 개의 무리가 있는지를 찾아내는 문제였다.
dfs가 개인적으로 더 사용하기 편해서 썼고, 이 때 visited 배열 조건을 잘 세팅해주는 것이 중요했다.
init()
함수와 global
키워드로 깔끔하게 작성하는 것을 연습하자.