EduBrick
← вернуться к уроку · Продвинутый уровень: проверь себя

I. Два цвета

3000 мс · 256 МБ · всё или ничего

Неориентированный граф задан списком рёбер. Проверьте, можно ли покрасить его вершины в два цвета так, чтобы концы каждого ребра были разного цвета.

Такие графы называют двудольными. Проверяется это обходом: красим стартовую вершину в первый цвет, каждого соседа — в противоположный, и если наткнулись на соседа того же цвета, что и текущая вершина, — граф не двудольный.

Обход надо запускать из каждой непосещённой вершины: граф может быть несвязным, и каждая компонента красится независимо.

Петля делает граф не двудольным сразу.

Формат ввода

Первая строка содержит числа nn (1n1051 \le n \le 10^5) и mm (0m21050 \le m \le 2 \cdot 10^5).

Далее идут mm строк с рёбрами. Возможны петли и кратные рёбра.

Формат вывода

Слово «YES», если граф двудольный, и «NO» иначе.

Примеры

ввод
4 4
1 2
2 3
3 4
4 1
вывод
YES
ввод
3 3
1 2
2 3
3 1
вывод
NO
Войдите, чтобы отправлять решения.
← Вернуться к уроку