42 42 votes The most efficient algorithm for finding the number of connected components in an undirected graph on $n$ vertices and $m$ edges has time complexity$\Theta(n)$$\Theta(m)$$\Theta(m+n)$$\Theta(mn)$ Algorithms gatecse-2008 algorithms graph-algorithms time-complexity normal strongly-connected-components + – Kathleen 22.9k views answer comment Share Follow Print See all 5 Comments 5 5 Comments reply Show 2 previous comments palashbehra5 commented Nov 18, 2021 reply Follow flag Vivek Jain https://www.geeksforgeeks.org/number-of-connected-components-of-a-graph-using-disjoint-set-union/ If you meant this algorithm, it takes O(n+m) time as well. 0 0 replyShare cprdereddyy commented Apr 13, 2024 reply Follow flag thoose who don't know what CC arevisit this for a clear approachhttps://www.youtube.com/watch?v=8f1XPm4WOUc 2 2 replyShare Mayank_Pant commented Dec 4, 2025 reply Follow flag we can take both bfs or dfs but bfs can be best suited as dfs only confirms the connectivity but bfs ensures connectivity as well as shortest path. 0 0 replyShare Please log in or register to add a comment.
Best answer 44 44 votes Run DFS to find connected components. Its time complexity is $\Theta(m+n)$, hence (C) is the answer. Happy Mittal answered Aug 22, 2015 • edited Oct 26, 2017 by kenzou Happy Mittal comment Share Follow See all 25 Comments 25 25 Comments reply Show 22 previous comments Sambhrant Maurya commented Dec 9, 2019 i edited by ankitgupta.1729 Dec 9, 2019 reply Follow flag @Aks9639 Yes found it. There is no such thing as "connected components" in a directed graph. We use the term "connected components" for undirected graphs and "strongly connected components" for directed graphs. Finding strongly connected components in a directed graph is given by Kosaraju's algo which is an application of DFS. So TC is O(V+E). 6 6 replyShare Abhrajyoti00 commented Dec 11, 2022 reply Follow flag Both BFS and DFS can be used to find in $O(m+n)$ :- Undirected Graph:- Single connected component or not # Of Connected Components in G Single Bi-Connected Component or not # of Bi-Connected Components in G Directed Graph: - Single weakly connected component or not # Of weakly Connected Components in G Single strongly connected Component or not # Of strongly connected Components 5 5 replyShare sitikant commented Aug 25, 2023 reply Follow flag Although both BFS and DFS can be used. Still DFS is preferred from memory stand points. Give it a read : https://cs.stackexchange.com/questions/73686/why-do-we-prefer-dfs-to-find-connected-components. 1 1 replyShare Please log in or register to add a comment.
28 28 votes Both BFS or DFS can be used to find number of connected components. The Time complexity of BFS and DFS is $\Theta$(m+n). Hence C is Ans Rajesh Pradhan answered Nov 10, 2016 Rajesh Pradhan comment Share Follow See all 2 Comments 2 2 Comments reply habedo007 commented Oct 23, 2017 reply Follow flag $\Theta (m+n)$ when BFS and DFS is implemented using adjacency list, else it is $\Theta (n^2)$ when implemented using adjacency matrix. 10 10 replyShare syncronizing commented Aug 21, 2018 reply Follow flag Or we can say Max(m,n) 0 0 replyShare Please log in or register to add a comment.
1 1 vote To find the number of connected components using either BFS or DFS time complexity is θ(m+n). Suppose if we are using Adjacency matrix means it takes θ(n2). varunrajarathnam answered Aug 7, 2020 varunrajarathnam comment Share Follow 0 reply Please log in or register to add a comment.
1 1 vote To find the number of connected components in a graph, one of the most efficient algorithms you can use is the Depth-First Search (DFS) or Breadth-First Search (BFS). The time complexity of both DFS and BFS is O(V + E), where V is the number of vertices and E is the number of edges in the graph.Here's how you can use DFS or BFS to find the number of connected components:Initialize a count: Start with a count of 0 for connected components.Visit nodes: Use an array or a list to keep track of visited nodes.Loop through all nodes: For each node, if it has not been visited, increment the connected component count, and perform a DFS or BFS starting from that node to mark all reachable nodes as visited.Increment the count: Each time you start a DFS or BFS from an unvisited node, it means you have found a new connected component.This approach ensures that each node and edge is checked precisely once, leading to the O(V + E) time complexity. This is optimal for most scenarios where you need to process all nodes and edges of a graph to determine connectivity. Kshitij Sharma answered Dec 8, 2024 Kshitij Sharma comment Share Follow 0 reply Please log in or register to add a comment.
0 0 votes BFS and DFS is used for traversing the graph which takes O(m+n). Surya_Dev Chaturvedi answered Jan 15, 2021 Surya_Dev Chaturvedi comment Share Follow 0 reply Please log in or register to add a comment.
0 0 votes (C.) θ(m+n) Rahul_kumar3 answered Oct 18, 2023 Rahul_kumar3 comment Share Follow 0 reply Please log in or register to add a comment.