Поиск

Болото


Ограничение времени - 1 секунда

Ввод - стандартный ввод или input.txt

Ограничение памяти - 256Mb

Вывод - стандартный вывод или output.txt

Вы находитесь на болоте размером $$$n$$$ на $$$m$$$ и окруженном непроходимым лесом. Вы стоите в точке (0, 0) и хотите добраться до точки выхода $$$(n, m)$$$. На болоте есть $$$k$$$ опасных трясин. Если вы попадете в трясину, то будете затянуты и не сможете выбраться. Каждая трясина представляет собой круг.

Ваша задача состоит в том, чтобы определить, сможете ли вы выбраться из болота или нет.

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

В первой строке даны три числа $$$n, m, k$$$ $$$(10 \le n, m \le 10\,000, 1 \le k \le 1\,000)$$$ — размеры болота и количество трясин.

Следующие $$$k$$$ содержат по три целых числа $$$x_i, y_i, r_i$$$ $$$(0 < x_i < n, 0 < y_i < m, 0 < r_i < 10\,000)$$$ — координаты центра $$$i$$$-й трясины и радиус.

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

Вывести сообщение YES, если сможете выбраться из болота, иначе вывести сообщение NO.

Примеры

Входные данные
10 22 2
6 16 5
4 6 5
Выходные данные
YES
Входные данные
10 10 2
5 4 4
3 7 4
Выходные данные
NO

Болото

Факт №1. Между двумя трясинами нельзя пройди, если расстояние между центрами меньше суммарной длины радиусов.

Факт №2. Между границей леса и трясиной нельзя пройти, если расстояние между ними меньше радиуса.

Давайте построим граф, где вершины, это трясины и добавим ещё 4 вершины это границы леса, а рёбра между вершинами, если между ними нельзя пройти.

Тогда пройти из координаты (0, 0) нельзя дойти до $$$(n, m)$$$, если существует путь из левой границы леса до нижней или правой, или существует путь из верхней границы до нижней или правой.

Существование такого пути можно проверить обычным dfs.


Для отправки решения задачи необходимо авторизоваться!