Given an undirected graph G with N nodes, M edges, and an integer K, the task is to find the maximum count of edges that can be removed such that there remains exactly K connected components after the removal of edges. If the graph cannot contain K connect components, print -1.
Approach: To solve the given problem, count the number of connected components present in the given graph. Let the count be C. Observe that if C is greater than K then no possible edge removal can generate K connected components as the number of connected components will only increase. Otherwise, the answer will always exist.
Following observations need to be made in order to solve the problem:
- Suppose C1, C2, …, Cc, are the number of node in each connected component. Then, each component must have edges as C1 – 1, C2 – 1, …, Cc -1 after edges are removed. Therefore,
C1 – 1 + C2 – 1 + … + Cc – 1 = C1 + C2 + … + Cc – C = N – C, where N is the number of nodes.
- The above condition will give us the C connected components by removing M – (N – C) edges as N – C edges are needed to make C components. To get K components, (K – C) more edges must be removed.
- Hence, the total count of edges to be removed is given by:
M – (N – C) + (K – C) = M – N + K
Follow the steps below to solve the problem:
- Count the number of connected components present in the given graph. Let the count be C.
- If C is greater than K, print -1.
- Else print M – N + K where N is the number f nodes, M is the number of edges and K is the required number of connected components.
Below is the implementation of the above approach:
Time Complexity: O(N + M)
Auxiliary Space: O(M + N)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Maximum number of edges among all connected components of an undirected graph
- All vertex pairs connected with exactly k edges in a graph
- Convert undirected connected graph to strongly connected directed graph
- Maximum sum of values of nodes among all connected components of an undirected graph
- Maximum decimal equivalent possible among all connected components of a Binary Valued Graph
- Program to count Number of connected components in an undirected graph
- Minimum number of edges required to be removed from an Undirected Graph to make it acyclic
- Sum of the minimum elements in all connected components of an undirected graph
- Clone an undirected graph with multiple connected components
- Count of unique lengths of connected components for an undirected graph using STL
- Connected Components in an undirected graph
- Octal equivalents of connected components in Binary valued graph
- Largest subarray sum of all connected components in undirected graph
- Ways to Remove Edges from a Complete Graph to make Odd Edges
- Minimum edges required to make a Directed Graph Strongly Connected
- Maximum number of edges that N-vertex graph can have such that graph is Triangle free | Mantel's Theorem
- Shortest path with exactly k edges in a directed and weighted graph
- Shortest path with exactly k edges in a directed and weighted graph | Set 2
- Shortest path in a graph from a source S to destination D with exactly K edges for multiple Queries
- Number of connected components in a 2-D matrix of strings
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.