1seul357

[SWEA] 창용 마을 무리의 개수 본문

알고리즘/SWEA

[SWEA] 창용 마을 무리의 개수

1seul 2021. 11. 28. 16:18
def Find(x):
    if P[x] != x:
        P[x] = Find(P[x])
    return P[x]
 
 
def Union(a, b):
    pa = Find(a)
    pb = Find(b)
    P[pb] = pa
 
 
T = int(input())
for TC in range(T):
    N, M = map(int, input().split())
    P = [i for i in range(N + 1)]
    edges = []
    counts = [0] * (N+1)
    ans = 0
 
    for i in range(M):
        n1, n2= map(int, input().split())
        edges.append((n1, n2))
 
    for i in range(2): 
        for n1, n2 in edges:
            if Find(n1) == Find(n2):
                continue
            Union(n1, n2)
 
    ans = len(set(P))
 
    print('#{} {}'.format(TC + 1, ans-1))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 최소 신장 트리  (0) 2021.11.28
[SWEA] 최소비용  (0) 2021.11.28
[SWEA] 보급로  (0) 2021.11.28
[SWEA] N Castle  (0) 2021.11.28
[SWEA] 격자판의 숫자 이어붙이기  (0) 2021.11.28