https://www.acmicpc.net/problem/4195
백준 1717번 '집합의 표현'을 풀었다면 약간의 코드 수정으로 풀 수 있다.
유니온 파인드 문제들은 대부분 결이 비슷한 것 같다.
정답 코드
import sys
input = sys.stdin.readline
def find(a):
if a == parent[a]:
return a
parent[a] = find(parent[a])
return parent[a]
def union(a, b):
rootA = find(a)
rootB = find(b)
if rootA != rootB:
parent[rootA] = rootB
number[rootB] += number[rootA]
else:
return
n = int(input())
for _ in range(n):
parent = dict()
number = dict()
net = int(input())
for i in range(net):
name1, name2 = map(str, input().split())
if name1 not in parent:
parent[name1] = name1
number[name1] = 1
if name2 not in parent:
parent[name2] = name2
number[name2] = 1
union(name1, name2)
print(number[find(name1)])
'PS > 백준' 카테고리의 다른 글
[백준] 2251번 물통 (python) (1) | 2023.12.03 |
---|---|
[백준] 13904번 과제 (python) (0) | 2023.11.05 |
[백준] 1253번 좋다 (python) (0) | 2023.10.18 |
[백준] 2230번 수 고르기 (Python) (1) | 2023.10.18 |
[백준] 11660번 구간 합 구하기 5 (Python) (0) | 2023.10.16 |