File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
Graph/DFS_DepthFirstSearch Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < vector>
3
+ using namespace std ;
4
+
5
+ vector<vector<int >> adj;
6
+ vector<bool > visited;
7
+ void dfs (int from) {
8
+ cout << endl << " --dfs(" << from << " ) is called--" << endl;
9
+ cout << " so visited " << from <<" will be 'true'" << endl;
10
+ visited[from] = true ;
11
+ for (size_t i = 0 ; i < adj[from].size (); ++i) {
12
+ int to = adj[from][i];
13
+ cout << " from : " <<from<<" / to : " << to << endl;
14
+ if (!visited[to]) {
15
+ cout << " dfs(" << to << " ) is called" << endl;
16
+ dfs (to);
17
+ }
18
+ }
19
+ }
20
+
21
+ void dfsAll () {
22
+ visited = vector<bool >(adj.size (), false );
23
+ for (size_t i = 0 ; i < adj.size (); ++i) {
24
+ if (!visited[i]) {
25
+ cout << endl << " -dfsAll(" << i << " ) is called-" << endl;
26
+ dfs (i);
27
+ }
28
+ else {
29
+ cout << " node " << i << " is already visited" << endl;
30
+ }
31
+ }
32
+ }
33
+
34
+ void showAdj (vector<vector<int >> adjacent) {
35
+ for (size_t i = 0 ; i < adjacent.size (); ++i) {
36
+ for (size_t j = 0 ; j < adj[i].size (); ++j) {
37
+ if (adjacent[i][j] != NULL )
38
+ {
39
+ cout << i << " -> " << adjacent[i][j] << endl;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ int main () {
45
+ adj.resize (7 );
46
+ visited.resize (7 );
47
+ adj[0 ].push_back (1 );
48
+ adj[0 ].push_back (2 );
49
+ adj[1 ].push_back (3 );
50
+ adj[1 ].push_back (4 );
51
+ adj[5 ].push_back (6 );
52
+ showAdj (adj);
53
+ dfsAll ();
54
+ return 0 ;
55
+ }
You can’t perform that action at this time.
0 commit comments