Олимпиадный тренинг

Задача . F. Проверка на двудольность


Дан неориентированный граф, состоящий из n вершин. Изначально в графе нет рёбер. Также даны q запросов; каждый запрос либо добавляет ребро в граф, либо удаляет ранее добавленное. После каждого запроса необходимо проверить, что граф двудольный (т. е. можно покрасить все вершины в два цвета так, чтобы ни одно ребро не соединяло две вершины одного цвета).

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

В первой строке записаны два числа n и q (2 ≤ n, q ≤ 100000).

Затем следуют q строк. В i-й строке записаны два числа xi и yi (1 ≤ xi < yi ≤ n). Эти числа описывают i-й запрос: если существует ребро между вершинами xi и yi, то удалить его, иначе добавить его.

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

Выведите q строк. В i-й строке должно быть записано YES, если граф является двудольным после i-го запроса, и NO в противном случае.


Примеры
Входные данныеВыходные данные
1 3 5
2 3
1 3
1 2
1 2
1 2
YES
YES
NO
YES
NO

time 6000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя