← вернуться к уроку · Продвинутый уровень: проверь себя
I. Два цвета
3000 мс · 256 МБ · всё или ничего
Неориентированный граф задан списком рёбер. Проверьте, можно ли покрасить его вершины в два цвета так, чтобы концы каждого ребра были разного цвета.
Такие графы называют двудольными. Проверяется это обходом: красим стартовую вершину в первый цвет, каждого соседа — в противоположный, и если наткнулись на соседа того же цвета, что и текущая вершина, — граф не двудольный.
Обход надо запускать из каждой непосещённой вершины: граф может быть несвязным, и каждая компонента красится независимо.
Петля делает граф не двудольным сразу.
Формат ввода
Первая строка содержит числа () и ().
Далее идут строк с рёбрами. Возможны петли и кратные рёбра.
Формат вывода
Слово «YES», если граф двудольный, и «NO» иначе.
Примеры
ввод
4 4 1 2 2 3 3 4 4 1
вывод
YES
ввод
3 3 1 2 2 3 3 1
вывод
NO
Войдите, чтобы отправлять решения.