eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Векторы

Векторы

На плоскости задано множество точек (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 ≤ ik - 1), и a[k] соединена вектором с a[1]. Циклы считаются разными, если они отличаются хотя бы одной вершиной.

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

prb676

Входные данные

Первая строка содержит два целых числа N (1 ≤ N ≤ 100) и M (1 ≤ M ≤ 100). Каждая из последующих N строк, содержит M пар чисел (то есть 2×M чисел). Пара x, находящаяся в строке y задаёт вектор в точке (x, y).

Выходные данные

Вывести одно целое число - количество циклов, образованных векторами.

Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
2 4 
-1 1 -1 1 -1 0 0 1
1 0 1 0 0 -1 0 -1
Выходные данные #1
2
Автор Шамиль Ягияев
Источник 2004 XVII Всеукраинская олимпиада по информатике, Харьков, Март 28 - Апрель 3, тур 1