Sunday, October 29, 2017

1111 - Best Picnic Ever

Problem Link : http://www.lightoj.com/volume_showproblem.php?problem=1111

Solution :

#include<bits/stdc++.h>

using namespace std;
vector<int>v[1002];
vector<int>vv;
int visited[1002];

int arr[1002];

void bfs(int s)
{
    queue<int>q;
    memset(visited,-1,sizeof(visited));
    visited[s]=0;
    arr[s]=arr[s]+1;
    q.push(s);

    int u,p,x;

    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]=visited[u]+1;
                x=arr[p]=arr[p]+1;
                q.push(p);

            }
        }

    }
    //w= visited[d]-visited[s];
    //return w;
}

int main()
{
    int t,n,m,k,a,b;

    scanf("%d",&t);

    for(int ca=1; ca<=t; ca++)
    {
        scanf("%d%d%d",&k,&n,&m);

        for(int i=1; i<=k; i++)
        {
            scanf("%d",&a);
            vv.push_back(a);
        }
        for(int i=1; i<=m; i++)
        {
            scanf("%d%d",&a,&b);
            v[a].push_back(b);
        }
        for(int i=0; i<k; i++)
        {
            bfs(vv[i]);

        }
        for(int i=0; i<1002; i++) v[i].clear();
        int cnt=0;

        for(int i=1; i<=n; i++ )
        {
            if(arr[i]==k) cnt++;
        }

        printf("Case %d: %d\n",ca,cnt);

        vv.clear();
        memset(arr,0,sizeof(arr));
    }

}

No comments:

Post a Comment