You are given a graph with 'N' vertices numbered from '1' to 'N' and 'M' edges. You have to colour this graph in two different colours, say blue and red such that no two vertices connected by an edge are of the same colour.
Note :The given graph may have connected components.
The first line of input contains two integers 'V' and 'E', separated by a single space. They denote the total number of vertices and edges respectively.
From the second line onwards, the next 'E' lines represent an edge between the two vertices.
Every edge is represented by two vertices(u, v) that share an edge between them. The values of the vertices would again be separated by a single space.
Output Format :
Print "YES" if it is possible else print "NO".
1 <= E <= 10 ^ 5
1 <= V <= 10 ^ 6
Time Limit: 1 sec
4 4
1 2
2 3
3 4
4 1
YES
One possible coloring of the graph is:

3 3
1 2
2 3
3 1
NO
For every vertex, there are two possibilities. Either the color is Red or Blue.
Try to explore all the possibilities by permuting the combinations of Red and Blue.
We can approach this problem by running a DFS starting from vertex-1.
We have a total of ‘m’ edges.
When can we achieve the configuration when we see in reference to vertex-1?
The above idea can be extended further in a Depth First manner to check the above condition on every vertex possible.
O(E + V), Where E and V are the edges and vertices of the graph.
We are traversing through each vertex to check that no two vertices connected by an edge are of the same colour, which takes O(E + V) time. Hence, the overall Time Complexity is O(E + V).
O(E), Where E is the edges of the graphs.
In the worst case, we make E number of stack calls. Hence, the overall Space Complexity is O(E).