
0에서 시작하고 모든 경로를 다 연결했을때, 가장 짧은경우는? 이다.
신장 트리 == 크루스칼 알고리즘을 따지는 문제이다.
크루스칼 알고리즘은
작은 길로 sort 한다음 > 이 순서대로 길이 만들어지나 안만들어지나 확인하면서 만든느 그래프이다.
그럼 이 길이 연결되나 안되나?를 확인하는건 union find 알고리즘을 사용해야된다는 것을 알수 있다.
union -find 알고리즘은 연결되면서 하나의 집합을 만들때 가장 작은 / 큰 애가 여기서 대표예요 라는것을 알려주는 알고리즘이라고 생각하면된다.

find_parent 를 처음에 보고 해석하기 좀 어려웠다.
재귀로 보면 
이렇게 설명이 되는데 이게 뭔말인가 하면 재귀로 계속가게되면 1을 만나게 된다. 따라서 우리는 1을 2 에게 리턴해 주고 . 2는 1이된다. 다시 1이 된 2 를 리턴해주니까 3도 1이된다는것이다.
그리고 union 할때도

parent_score[b]= find_union_parent_a 가 아닐까 생각을 해봤는데 b의 부모님이 b라는 확정이 아니고 b도 다른 부모를 따를때 그 부모를 다르게 설정하라는 말이니까 이런식으로 해야된다. <- 이부분이 잴 많이 햇갈림.