백준 4386 별자리 만들기
https://www.acmicpc.net/problem/4386
최소 스패닝 트리에서 union-find 변수 대입 코드이다.
while(retry):
retry = False
a = distance.pop()
if(visited[a[0]] == visited[a[1]]):
continue
if(visited[a[0]] != visited[a[1]]):
for i in range(1,n+1):
if visited[i] == visited[a[1]]:
visited[i] = visited[a[0]]
별 생각 없이 적었는데, 이렇게 코드를 적게 되면
visited[a[0]]의 값이 변하게 되면
if문의 판별에도 영향이 가게 되고, 대입되는 값도 이상하게 된다.
while(distance):
a = distance.pop()
if visited[a[0]] != visited[a[1]]:
old_group = visited[a[1]]
new_group = visited[a[0]]
ans += a[2]
for i in range(1, n+1):
if visited[i] == old_group:
visited[i] = new_group
그러니까 이렇게 대입하려는 변수는 따로 지정을 한 다음에 대입을 해야
코드가 안정해진다.