Given a directed graph and a node X. The task is to find the minimum number of edges that must be added to the graph such that any node can be reachable from the given node.
Input: X = 0
Input: X = 4
Approach: First, let’s mark all the vertices reachable from X as good, using a simple DFS. Then, for each bad vertex (vertices which are not reachable from X) v, count the number of bad vertices reachable from v (it also can be done by simple DFS). Let this number be cntv. Now, iterate over all bad vertices in non-increasing order of cntv. For the current bad vertex v, if it is still not marked as good, run a DFS from it, marking all the reachable vertices as good, and increase the answer by 1 (in fact, we are implicitly adding the edge (s, v)). It can be proved that this solution gives an optimal answer.
Below is the implementation of the above approach:
- Minimum cost path from source node to destination node via an intermediate node
- Kth largest node among all directly connected nodes to the given node in an undirected graph
- Shortest path with exactly k edges in a directed and weighted graph
- Assign directions to edges so that the directed graph remains acyclic
- Find all reachable nodes from every node present in a given set
- Maximum number of edges to be added to a tree so that it stays a Bipartite graph
- Minimum number of edges that need to be added to form a triangle
- Right sibling of each node in a tree given as array of edges
- Minimum number of edges between two vertices of a Graph
- Minimum number of edges between two vertices of a graph using DFS
- Ways to Remove Edges from a Complete Graph to make Odd Edges
- Maximum number of nodes which can be reached from each node in a graph.
- k'th heaviest adjacent node in a graph where each vertex has weight
- Count single node isolated sub-graphs in a disconnected graph
- Check whether a node is leaf node or not for multiple queries
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.