Verificar se o Grafo é Bipartido

Um grafo é considerado bipartido se for possível colorizá-lo com duas cores de forma que nenhum par de vértices adjacentes partilhe a mesma cor.
Determinar se um grafo é bipartido pode ajudar a revelar estruturas e propriedades específicas, permitindo resolver problemas de forma mais eficiente em áreas como planeamento de tarefas, alocação de recursos e resolução de conflitos. Além disso, os grafos bipartidos possibilitam algoritmos mais simples e otimizações em tarefas como emparelhamento máximo (maximum matching) e coloração de grafos (graph coloring).
É fornecido um grafo não dirigido com v vértices e e arestas. É necessário verificar se o grafo é bipartido ou não.

Entrada

A primeira linha da entrada contém dois inteiros v (1 ≤ v ≤ 100 000) e e (1 ≤ e ≤ 100 000).
As seguintes e linhas contêm pares de inteiros v1 e v2 (1 ≤ v1, v2 ≤ v), indicando que o vértice v1 está ligado ao vértice v2 e vice-versa.

Saída

O programa deve imprimir Yes se o grafo for bipartido e No caso contrário.

Exemplos

Entrada
Saída
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