#include<bits/stdc++.h>
#include <iostream>
using namespace std;
class graph
{
int V;
list<int> *adj;
void DFS_UTL(int v, bool visited[]);
public:
graph(int V);
void add_edge(int v,int w);
void dfs(int v);
};
graph :: graph(int V)
{
this->V = V;
adj = new list<int>[V];
}
void graph :: add_edge(int v,int w)
{
adj[v].push_back(w);
}
void graph :: DFS_UTL(int v,bool visited[])
{
visited[v] = true;
cout<<v<<" ";
list<int> :: iterator i;
for(i = adj[v].begin(); i != adj[v].end(); i++)
{
if(!visited[*i])
DFS_UTL(*i,visited);
}
}
void graph :: dfs(int v)
{
bool *visited = new bool[V];
int i;
for(i=0;i<V;i++)
visited[i] = false;
DFS_UTL(v,visited);
}
int main() {
graph g(8);
g.add_edge(0,1);
g.add_edge(1,5);
g.add_edge(0,3);
g.add_edge(4,2);
g.add_edge(0,4);
g.add_edge(6,7);
g.add_edge(5,6);
cout<< "Traversal of graph = ";
g.dfs(0);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgZ3JhcGgKewogICAgaW50IFY7CiAgICBsaXN0PGludD4gKmFkajsKICAgIHZvaWQgREZTX1VUTChpbnQgdiwgYm9vbCB2aXNpdGVkW10pOwogICAgCiAgICBwdWJsaWM6CiAgICBncmFwaChpbnQgVik7CiAgICB2b2lkIGFkZF9lZGdlKGludCB2LGludCB3KTsKICAgIHZvaWQgZGZzKGludCB2KTsKfTsKCmdyYXBoIDo6IGdyYXBoKGludCBWKQp7Cgl0aGlzLT5WID0gVjsKCWFkaiA9IG5ldyBsaXN0PGludD5bVl07Cn0KCnZvaWQgZ3JhcGggOjogYWRkX2VkZ2UoaW50IHYsaW50IHcpCnsKCWFkalt2XS5wdXNoX2JhY2sodyk7Cn0KCnZvaWQgZ3JhcGggOjogREZTX1VUTChpbnQgdixib29sIHZpc2l0ZWRbXSkKewoJdmlzaXRlZFt2XSA9IHRydWU7Cgljb3V0PDx2PDwiICI7CglsaXN0PGludD4gOjogaXRlcmF0b3IgaTsKCQoJZm9yKGkgPSBhZGpbdl0uYmVnaW4oKTsgaSAhPSBhZGpbdl0uZW5kKCk7IGkrKykKCXsKCQlpZighdmlzaXRlZFsqaV0pCgkJREZTX1VUTCgqaSx2aXNpdGVkKTsKCX0KfQoKdm9pZCBncmFwaCA6OiBkZnMoaW50IHYpCnsKCWJvb2wgKnZpc2l0ZWQgPSBuZXcgYm9vbFtWXTsKCWludCBpOwoJZm9yKGk9MDtpPFY7aSsrKQoJICAgdmlzaXRlZFtpXSA9IGZhbHNlOwoJCgkKCURGU19VVEwodix2aXNpdGVkKTsKfQoKaW50IG1haW4oKSB7CmdyYXBoIGcoOCk7CgoJZy5hZGRfZWRnZSgwLDEpOwoJZy5hZGRfZWRnZSgxLDUpOwoJZy5hZGRfZWRnZSgwLDMpOwoJZy5hZGRfZWRnZSg0LDIpOwoJZy5hZGRfZWRnZSgwLDQpOwoJZy5hZGRfZWRnZSg2LDcpOwoJZy5hZGRfZWRnZSg1LDYpOwoKCgljb3V0PDwgIlRyYXZlcnNhbCBvZiBncmFwaCA9ICI7CglnLmRmcygwKTsKCXJldHVybiAwOwp9