10883. Вектори


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

На площині задана множина точок (\(x, y\)), де \(x, y\) – цілі числа, \(1≤x≤M\), \(1≤y≤N\). З кожної точки виходить рівно один із наступних векторів: (-1,-1), (-1,0), (-1,1), (0,1), (1,1), (1,0), (1,-1), (0,-1). Кожен вектор з'єднує одну цілу точку площини з іншою. Наприклад, якщо з точки (2, 5) виходить вектор (1, 1), то він з'єднує цю точку з (3, 6), але не навпаки.

Послідовність з двох і більше точок площини \(a_1, a_2, ..., a_k\) назвемо циклом, якщо кожна точка \(a_i\) з'єднана вектором з \(a_{i+1}\) (\(1≤i≤k-1\)) і \(a_k\) з'єднана вектором з \(a_1\). Цикли вважаються різними, якщо вони відрізняються хоча б однією вершиною.

Напишіть програму, яка за інформацією про вектори, що виходять із точок площини, знаходить кількість різних циклів.

Формат вхідних даних

Перший рядок містить два цілих числа \(N\) (\(1≤N≤100\)) та \(M\) (\(1≤M≤100\)).

Кожен з наступних \(N\) рядків містить \(M\) пар чисел (тобто є \(2 \times M\) чисел). Пара \(x\), яка знаходиться у рядку \(y\), задає вектор у точці (\(x, y\)).

Формат вихідних даних

Єдиний рядок повинен містити ціле число – кількість циклів, утворених векторами.

Приклад вхідних даних

2 4 
-1 1 -1 1 -1 0 0 1
1 0 1 0 0 -1 0 -1

Приклад вихідних даних

2

Коментарі

Ще немає коментарів.