Skip to main content

counting the number of nodes of a particular level

#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;
}

Comments

Popular posts from this blog

Gcd using recursion

#include<iostream> #include<algorithm> using namespace std; int gcd(int m,int n) {     if(max(m,n)%min(m,n)==0)     {         return min(m,n);     }     else     {         gcd(max(m,n)%min(m,n),min(m,n));     } } int main() {     int m,n;     cin>>m>>n;     cout<<gcd(m,n);     return 0; }

basic stack stl c++

//basic stack stl c++ #include<iostream> #include<stack> using namespace std; void display(stack<int> s) {     while(!s.empty())     {         cout<<s.top()<<" ";         s.pop();     }     cout<<endl; } int main() {     stack<int> s;     s.push(1);     s.push(4);     s.push(5);     display(s);        //display the stack elements     s.pop();      //removes the top element     display(s);     if(s.empty())         cout<<"The stack is empty"<<endl;     else         cout<<"stack is not empty"<<endl;     return 0; }

Jee Main Experience

April 8th, the day for which I worked hard for 3 years finally came. I woke up early and revised chemistry for 2 hrs and solved 2–3 math problems. That's all I have done in the morning. I reached the exam centre. It was already filled with many students and anxious parents. Some students were calm. I found one guy still solving his coaching material. I was shocked. I tried to calm myself. I went into the hall. I sat in my place. I spent an hour and half sitting idle. Now the real story begins. The omr and the paper were supposed to be given at 9:15. We didn't get. 9:20 still we didn't get. 9:25 we got. Ok I started filling the details. All those formalities were done by 9:50. I'm not joking. This was the exact time. By then I thought I'm done for nothing. I started math. I solved the first question. I got it. It gave me some confidence. I started doing the other questions. They were lengthy. I started feeling uncomfortable. I randomly switched to ph...