VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-two-disjoint-good-sets-of-vertices-in-a-given-graph/

⇱ Find two disjoint good sets of vertices in a given graph - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find two disjoint good sets of vertices in a given graph

Last Updated : 12 Jul, 2025

Given an undirected unweighted graph with N vertices and M edges. The task is to find two disjoint good sets of vertices. A set X is called good if for every edge UV in the graph at least one of the endpoint belongs to X(i.e, U or V or both U and V belong to X). 
If it is not possible to make such sets then print -1.

Examples:

Input : 

👁 Image


Output : {1 3 4 5} ,{2 6} 
One disjoint good set contains vertices {1, 3, 4, 5} and other contains {2, 6}.

Input :  

👁 Image

Output : -1 
 

Approach: 
One of the observations is that there is no edge UV that U and V are in the same set. The two good sets form a bipartition of the graph, so the graph has to be bipartite. And being bipartite is also sufficient. Read about bipartition here.

Below is the implementation of the above approach :  


Output: 
1 3 4 5 
2 6

 

Time Complexity: O(n)

Space Complexity: O(n)

Comment
Article Tags:
Article Tags: