Tuesday, April 12, 2016

280 - Vertex-( UVA ) ( Category : BFS )

Problem link :https://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&page=show_problem&category=&problem=216&mosmsg=Submission+received+with+ID+17192900

Solution :
#include<bits/stdc++.h>

using namespace std;

int visited[102];
vector<int>v[102];

void bfs(int s,int n)
{
    int cnt=0,u,p,ans;
    memset(visited,-1,sizeof(visited));

    queue<int>q;

    q.push(s);

    while(!q.empty())
    {
        u=q.front();
        q.pop();

        for(int i=0; i<v[u].size(); i++)
        {
            p=v[u][i];

            if(visited[p]==-1)
            {
                visited[p]=0;
                q.push(p);
                cnt++;
            }
        }
    }
    ans=n-cnt;
    cout<<ans;
    for(int i=1; i<=n; i++)
    {
        if(visited[i]==-1) cout<<" "<<i;
    }
    cout<<endl;
}

int main()
{
    int t,a,b,r=0,t1;


    while(   (cin>>t) and (t!=0))
    {
        while(1)
        {

            if(r==0)
            {
                cin>>a;
                if(a==0) break;
                r++;
            }
            cin>>b;
            if(b==0) r=0;

            else
            {
                v[a].push_back(b);
            }

        }
        cin>>t1;

        for(int i=0; i<t1; i++)
        {
            cin>>b;
            bfs(b,t);
        }

        for(int i=0; i<102; i++) v[i].clear();

    }

}

No comments:

Post a Comment