Informática Avançado – Semana 53 – Problema 2

por

Bipartido ou não?

 

É dado um grafo não-direcionado composto por $$N$$ vértices e $$M$$ arestas. Se for possível dividir os vértices do grafo em dois conjuntos disjuntos $$A$$ e $$B$$ tal que cada aresta liga apenas vértices do conjunto $$A$$ para vértices do conjunto $$B$$, é dito que o grafo é bipartido. Thiaguinho está estudando sobre grafos bipartidos, e por isso, quer descobrir se ao adicionar uma aresta ao grafo, ele será bipartido ou não. Ajude Thiaguinho a determinar, para cada $$i \leq M$$, se ao adicionar apenas as arestas com índice menor ou igual a $$i$$ no grafo, ele será bipartido ou não.

Entrada

A primeira linha da entrada consiste de dois inteiros $$N$$ ($$1 \leq N \leq 10^5$$) e $$M$$ ($$1 \leq M \leq min(\frac{N(N-1)}{2}, 10^5)$$), representando, respectivamente, a quantidade de vértices e arestas do grafo. As próximas $$M$$ linhas contém dois inteiros, $$U_i$$ e $$V_i$$ ($$1 \leq U_i, V_i \leq N$$), os dois vértices sendo ligados pela aresta $$i$$.

Saída

Para cada uma das $$M$$ arestas, seu programa deve imprimir “Sim” se o grafo for bipartido considerando apenas as arestas até o momento atual, ou “Não”, caso contrário.

Exemplo

ENTRADA SAÍDA
4 5
1 2
2 3
2 4
3 4
1 4
Sim
Sim
Sim
Não
Não

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *