| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- """Задача Класс"""
- # Обьявление множества для хранения точек
- dots = set()
- # Обьявление множества уже посещенных точек
- seen = set()
- # Обьявление счетчика цветов
- color_count = 0
- # Чтение чисел из потока stdin
- while True:
- try:
- # [int(x), int(y)]
- x, y = map(int, input().split())
- dots.add(
- (
- x,
- y,
- )
- )
- # EndOfFile
- except EOFError:
- break
- # Итерация по парам точек
- for dot in dots:
- # Если точка уже найдена и была проверена
- if dot in seen:
- # пропускаем
- continue
- # Запоминаем точку
- seen.add(dot)
- # Новая пара или одиночная точка
- color_count += 1
- # Лист для поиска подходящих точек в пару
- search = [dot]
- while search:
- # берем первую точку (x, y)
- x, y = search.pop(0)
- # Те точки, что подходят по условию
- approved_dots = [(x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)]
- for dot in approved_dots:
- # Если точка есть в файле и она не была проверена
- if (dot in dots) and (dot not in seen):
- seen.add(dot)
- # Следующая на поиск пары точка
- search.append(dot)
- print(color_count)
|