#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);
adj[w].push_back(v);
}
int bfs(int root,int l);
};
int graph:: bfs(int root,int l)
{
bool *visited=new bool[v];
int level[v];
for(int i=0;i<v;i++)
{
visited[i]=false;
level[i]=0;
}
visited[root]=true;
list<int> queue;
queue.push_back(root);
int count=0;
while(!queue.empty())
{
int s=queue.front();
queue.pop_front();
for(auto it=adj[s].begin();it!=adj[s].end();it++)
{
if(!visited[*it])
{
level[*it]=level[s]+1;
visited[*it]=true;
queue.push_back(*it);
}
}
}
for(int i=0;i<v;i++)
{
if(level[i]==l)
count++;
}
return count;
}
int main()
{
graph g(7);
g.add_edge(0,1);
g.add_edge(0,2);
g.add_edge(1,3);
g.add_edge(1,4);
g.add_edge(1,5);
g.add_edge(2,6);
int l;
cout<<"Enter the level"<<endl;
cin>>l;
cout<<g.bfs(0,l);
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);
adj[w].push_back(v);
}
int bfs(int root,int l);
};
int graph:: bfs(int root,int l)
{
bool *visited=new bool[v];
int level[v];
for(int i=0;i<v;i++)
{
visited[i]=false;
level[i]=0;
}
visited[root]=true;
list<int> queue;
queue.push_back(root);
int count=0;
while(!queue.empty())
{
int s=queue.front();
queue.pop_front();
for(auto it=adj[s].begin();it!=adj[s].end();it++)
{
if(!visited[*it])
{
level[*it]=level[s]+1;
visited[*it]=true;
queue.push_back(*it);
}
}
}
for(int i=0;i<v;i++)
{
if(level[i]==l)
count++;
}
return count;
}
int main()
{
graph g(7);
g.add_edge(0,1);
g.add_edge(0,2);
g.add_edge(1,3);
g.add_edge(1,4);
g.add_edge(1,5);
g.add_edge(2,6);
int l;
cout<<"Enter the level"<<endl;
cin>>l;
cout<<g.bfs(0,l);
return 0;
}
Comments
Post a Comment