-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDFS.cpp
More file actions
33 lines (29 loc) · 930 Bytes
/
Copy pathDFS.cpp
File metadata and controls
33 lines (29 loc) · 930 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Q153 https://www.codingninjas.com/codestudio/problems/dfs-traversal_630462?topList=striver-sde-sheet-problems&utm_source=striver&utm_medium=website
// Time: O(E+V) //DFS
// Space: O(E+V)+O(V)+O(V)
void dfsfunc(int node, vector<int> adj[],vector<int> &cmp, vector<int> &vis){
vis[node]=1;
cmp.push_back(node);
for(auto it: adj[node]){
if(vis[it]==0){
dfsfunc(it,adj,cmp,vis);
}
}
}
vector<vector<int>> depthFirstSearch(int v, int e, vector<vector<int>> &edge){
vector<vector<int>> dfs;
vector<int> vis(v,0);
vector<int> adj[v]; //vector of arrays
for(int i=0;i<e;i++){
adj[edge[i][0]].push_back(edge[i][1]);
adj[edge[i][1]].push_back(edge[i][0]);
}
for(int i=0;i<v;i++){
if(vis[i]==0){
vector<int> cmp; //component
dfsfunc(i,adj,cmp,vis);
dfs.push_back(cmp);
}
}
return dfs;
}