output_description: Print the sum of the weights of the Minimum Spanning Tree.
input_description: |V| |E|
      s0 t0 w0
      s1 t1 w1
      :
      s|E|-1 t|E|-1 w|E|-1
      
  
  , where |V| is the number of vertices and |E| is the number of edges in the
  graph. The graph vertices are named with the numbers 0, 1,..., |V|-1
  respectively.
  
  si and ti represent source and target verticess of i-th edge (undirected) and
  wi represents the weight of the i-th edge.
attempt: class UnionFind(object):
      def __init__(self, n):
          self.parent = {i: i for i in range(1, n + 1)}
          self.size = {i: 1 for i in range(1, n + 1)}
  
      def find(self, a):
          if self.parent[a] != a:
              self.parent[a] = self.find(self.parent[a])
          return self.parent[a]
  
      def getsize(self, a):
          return self.size[self.find(a)]
  
      def unite(self, a, b):
          a = self.find(a)
          b = self.find(b)
          if a == b:
              return
          if self.size[a] > self.size[b]:
              self.size[a] += self.size[b]
              self.parent[b] = a
          else:
              self.size[b] += self.size[a]
              self.parent[a] = b
  
      def isunited(self, a, b):
          return self.find(a) == self.find(b)
  
  
  V, E = map(int, input().split())
  uft = UnionFind(V)
  l = [tuple(map(int, input().split())) for _ in range(E)]
  l.sort(key=lambda x: x[2])
  
  ans = 0
  for s, t, w in l:
      s += 1
      t += 1
      if not uft.isunited(s, t):
          ans += w
          uft.unite(s, t)
  
  print(ans)
  
problem_description: Minimum Spanning Tree
  
    
  
  Find the sum of weights of edges of the Minimum Spanning Tree for a given
  weighted undirected graph G = (V, E).
samples: [{"input": "4 6\n    0 1 2\n    1 2 1\n    2 3 1\n    3 0 1\n    0 2 3\n    1 3 5", "output": "3"}, {"input": "6 9\n    0 1 1\n    0 2 3\n    1 2 1\n    1 3 7\n    2 4 1\n    1 4 3\n    3 4 1\n    3 5 1\n    4 5 6", "output": "5"}]