Проверка на двудольность графа

Граф считается двудольным, если его можно раскрасить в два цвета так, чтобы никакие две соседние вершины не были окрашены одинаково.
Определение двудольности графа помогает выявлять важные структуры и свойства, что упрощает решение задач в таких сферах, как планирование, распределение ресурсов и разрешение конфликтов. Кроме того, двудольные графы позволяют использовать более простые алгоритмы и применять оптимизации при поиске максимального паросочетания и раскраске графа.
Вам задан неориентированный граф с числом вершин v и числом рёбер e. Необходимо проверить, является ли данный граф двудольным.

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

В первой строке входных данных содержатся два целых числа v (1 ≤ v ≤ 100 000) и e (1 ≤ e ≤ 100 000).
В следующих e строках записаны пары целых чисел v1, v2 (1 ≤ v1, v2 ≤ v), где указывается, что вершина v1 соединена с вершиной v2, и наоборот.

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

Программа должна вывести Yes, если заданный граф двудольный, и No — в противном случае.

Примеры

Ввод
Вывод
2 1 2 1
Yes
3 2 2 1 1 3
Yes
3 3 1 2 1 3 2 3
No
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue