SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
def find_set(x): # 대표자 출력
if parent[x] == x:
return x
parent[x] = find_set(parent[x])
return parent[x]
def union(x, y): # 둘을 합침
x = find_set(x)
y = find_set(y)
if x == y:
return
if x > y:
parent[x] = y
else:
parent[y] = x
T= int(input())
for tc in range(1,T+1):
N, M = map(int, input().split())
parent = [x for x in range(N)] # 대표자 번호들 리스트
for _ in range(M):
a, b = map(int, input().split())
union(a-1,b-1)
res = set() # 중복제거를 위한 세트
for i in range(N):
res.add(find_set(i)) # 대표자들을 더함(중복이면 알아서 뭉침)
print(f'#{tc} {len(res)}') # 중복없는 대표자들의 개수 = 무리 수
'swea' 카테고리의 다른 글
1952. [모의 SW 역량테스트] 수영장 (0) | 2023.09.25 |
---|---|
2819. 격자판의 숫자 이어 붙이기 (0) | 2023.09.25 |
1861. 정사각형 방 (0) | 2023.09.04 |
1953. [모의 SW 역량테스트] 탈주범 검거 (0) | 2023.09.04 |
4366. 정식이의 은행업무 (0) | 2023.09.04 |