homework1.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. """Задача Класс"""
  2. # Обьявление множества для хранения точек
  3. dots = set()
  4. # Обьявление множества уже посещенных точек
  5. seen = set()
  6. # Обьявление счетчика цветов
  7. color_count = 0
  8. # Чтение чисел из потока stdin
  9. while True:
  10. try:
  11. # [int(x), int(y)]
  12. x, y = map(int, input().split())
  13. dots.add(
  14. (
  15. x,
  16. y,
  17. )
  18. )
  19. # EndOfFile
  20. except EOFError:
  21. break
  22. # Итерация по парам точек
  23. for dot in dots:
  24. # Если точка уже найдена и была проверена
  25. if dot in seen:
  26. # пропускаем
  27. continue
  28. # Запоминаем точку
  29. seen.add(dot)
  30. # Новая пара или одиночная точка
  31. color_count += 1
  32. # Лист для поиска подходящих точек в пару
  33. search = [dot]
  34. while search:
  35. # берем первую точку (x, y)
  36. x, y = search.pop(0)
  37. # Те точки, что подходят по условию
  38. approved_dots = [(x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)]
  39. for dot in approved_dots:
  40. # Если точка есть в файле и она не была проверена
  41. if (dot in dots) and (dot not in seen):
  42. seen.add(dot)
  43. # Следующая на поиск пары точка
  44. search.append(dot)
  45. print(color_count)