[백준 #4195]: 친구 네트워크(python)

jeyong·2023년 2월 2일
0

백준#1202:보석도둑

import sys
def find_parent(parent, x):
    if parent[x] != x:
        parent[x] = find_parent(parent, parent[x])
    return parent[x]

def union_parent(parent, a, b):
    a = find_parent(parent, a)
    b = find_parent(parent, b)
    if a != b:
        parent[b] = a
        count[a]+=count[b]
    print(count[a])
    
test_index = int(sys.stdin.readline())
for _ in range(test_index):
    index = int(sys.stdin.readline())
    parent = {}
    count={}
    for i in range(index):
        friend1,friend2  = map(str,sys.stdin.readline().strip().split())
        if(friend1 not in parent):
            parent[friend1] = friend1
            count[friend1] = 1
        if(friend2 not in parent):
            parent[friend2] = friend2
            count[friend2] = 1
        union_parent(parent, friend1, friend2)
        

해당문제는 서로소집합 자료구조를 활용하여 해결하였다. 하지만 효율적인 구조를 위해 union_parent함수를 수정하였다.
count 딕셔너리형 변수를 추가하여 해당 변수에 자식 노드의 개수를 더하도록 설계하였고 해당 변수를 출력한다.

profile
숙련도가 낮음을 기술의 문제로 돌리지말라.

0개의 댓글