#include<bits/stdc++.h>
using namespace std;
class graph
{
int v;
list<int> *adj;
public:
graph(int v)
{
this->v=v;
adj=new list<int>[v];
}
void add_edge(int v,int w)
{
adj[v].push_back(w);
}
void count(int start,int end,bool visited[],int& path);
int cou(int start,int end);
};
int graph:: cou(int start,int end)
{
bool *visited=new bool[v];
for(int i=0;i<v;i++)
visited[i]=false;
int path=0;
count(start,end,visited,path);
return path;
}
void graph::count(int start,int end,bool visited[],int& path)
{
visited[start]=true;
if(start==end)
path++;
else
{
for(auto it=adj[start].begin();it!=adj[start].end();it++)
{
if(!visited[*it])
{
count(*it,end,visited,path);
}
}
}
visited[start]=false;
}
int main()
{
graph g(4);
g.add_edge(0,1);
g.add_edge(0,2);
g.add_edge(0,3);
g.add_edge(2,0);
g.add_edge(2,1);
g.add_edge(1,3);
cout<<g.cou(2,3);
return 0;
}
using namespace std;
class graph
{
int v;
list<int> *adj;
public:
graph(int v)
{
this->v=v;
adj=new list<int>[v];
}
void add_edge(int v,int w)
{
adj[v].push_back(w);
}
void count(int start,int end,bool visited[],int& path);
int cou(int start,int end);
};
int graph:: cou(int start,int end)
{
bool *visited=new bool[v];
for(int i=0;i<v;i++)
visited[i]=false;
int path=0;
count(start,end,visited,path);
return path;
}
void graph::count(int start,int end,bool visited[],int& path)
{
visited[start]=true;
if(start==end)
path++;
else
{
for(auto it=adj[start].begin();it!=adj[start].end();it++)
{
if(!visited[*it])
{
count(*it,end,visited,path);
}
}
}
visited[start]=false;
}
int main()
{
graph g(4);
g.add_edge(0,1);
g.add_edge(0,2);
g.add_edge(0,3);
g.add_edge(2,0);
g.add_edge(2,1);
g.add_edge(1,3);
cout<<g.cou(2,3);
return 0;
}
Comments
Post a Comment