서로소 집합 만드는 알고리즘이... 헷갈린다. 간만에 푸니까 ㅠ
정말 기본 알고리즘을 많이 까먹었구나... 하..
1 차 제출 [ 3 / 10 ] Fail
일단 기억나는대로 작성한 코드............
def find_set(x):
if x == p[x]:
return x
return find_set(p[x])
def union(x, y):
if x > y:
p[find_set(x)] = find_set(y)
else:
p[find_set(y)] = find_set(x)
if __name__ == "__main__":
T = int(input())
p = {}
for test_case in range(1, T+1):
answer = 0
n, m = map(int, input().split())
teams = list(map(int, input().split()))
for i in range(1,n+1):
p[i] = i
for i in range(0, len(teams), 2):
union(teams[i], teams[i+1])
answer = len(set(p.values()))
print("#{} {}".format(test_case, answer))
... 왜 틀린지 모르겠다.. 왜지?
'CodingTest > SW Expert Academy' 카테고리의 다른 글
[ SW Expert Academy ] 5250. 최소 비용 (0) | 2022.11.14 |
---|---|
[ SW Expert Academy ] 5249. 최소 신장 트리 (0) | 2022.11.13 |
[ SW Expert Academy ] 5247. 연산 (0) | 2022.11.13 |
[ SW Expert Academy ] 5209. 최소 생산 비용 (0) | 2022.11.12 |
[ SW Expert Academy ] 5208 전기버스2 (0) | 2022.11.12 |