Algorithms & Data Structures

Determining if a Graph is Strongly Connected

A directed graph is strongly connected if every node $u$ in the graph has a path to every other node $v$ in the graph.

Which of the following methods is the most effective way to determine if a directed graph is strongly connected that will always return the correct answer?

A

Select any node in the directed graph and run the algorithm Breadth-First Search on the directed graph starting from that node. If it reaches all of the nodes in the directed graph, then the directed graph is strongly connected.

B

Select any node in the directed graph and run the algorithm Depth-First Search on the directed graph starting from that node. If it reaches all of the nodes in the directed graph, then the directed graph is strongly connected.

C

Select any node in the directed graph and run the algorithm Depth-First Search on the directed graph starting from that node. If it does reach all of the nodes in the directed graph, create a new directed graph that is the same as the previous graph except that all of its edges are in the reverse direction.

Run Depth-First Search on this new graph from the same starting node. If it reaches all of the nodes in this new directed graph as well, then the directed graph is strongly connected.

D

For each node in the directed graph, select that node as the starting node and run the algorithm Breadth-First Search on the directed graph from that starting node. If each iteration of Breadth-First Search reaches every node in the graph, then the directed graph is strongly connected.

E

For each node in the directed graph, select that node as the starting node and run the algorithm Depth-First Search on the directed graph from that starting node. If each iteration of Depth-First Search reaches every node in the graph, then the directed graph is strongly connected.