Advertisement
Pechckin

Untitled

Dec 5th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. import sys
  2. import math
  3.  
  4.  
  5. def main():
  6. N = int(sys.stdin.readline())
  7. dist = lambda a, b: math.sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2)
  8. dots = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
  9. check = [i + 1 for i in range(N)]
  10. edges = []
  11. for i in range(N):
  12. for j in range(i + 1, N):
  13. edges.append((dist(dots[i], dots[j]), j + 1, i + 1))
  14.  
  15. ans = 0.0
  16. ans_dots = []
  17. for edge in sorted(edges):
  18. if (check[edge[1] - 1] is not check[edge[-1] - 1]):
  19. ans += edge[0]
  20. ed1 = check[edge[-1] - 1]
  21. ed2 = check[edge[1] - 1]
  22. ans_dots.append((edge[-1], edge[1]))
  23. for i in range(N):
  24. if check[i] is ed1:
  25. check[i] = ed2
  26. if len(ans_dots) is len(dots) - 1:
  27. break
  28.  
  29. sys.stdout.write(f'{format(ans, ".6f")}\n{len(ans_dots)}\n')
  30. for k in ans_dots:
  31. sys.stdout.write(f'{k[0]} {k[1]}\n')
  32.  
  33.  
  34. if __name__ == '__main__':
  35. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement