Cod sursa(job #1019682)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 31 octombrie 2013 19:34:11
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;

vector <int> graf[20010];
bool viz[20010];
int muta[20010];//muta==0=>pierzator altfel =>iti da nodul in care trebuie sa muti
int sol[30010];
void dfs(int x)
{
    viz[x]=1;
    for(auto i : graf[x])
        {
            if(!viz[i])
                {
                    dfs(i);

                }
            if(!muta[i])
                muta[x]=i;
    }
}


int main()
{
    freopen("pioni.in","r",stdin);
    freopen("pioni.out","w",stdout);
    int t,n,m,a,b,k,nr;
    cin>>t>>n>>m;
    while(m--)
    {
        cin>>a>>b;
        graf[a].push_back(b);
    }

    for(int i=1;i<=n;i++)
        if(!viz[i])
            dfs(i);


    while(t--)
    {
        int gasit=0;

        cin>>k;
        while(k--)
        {
            cin>>nr;
            if(muta[nr])
                sol[++gasit]=nr;
        }
            if(!gasit)
                cout<<"Fumeanu";
            else
                {
                    cout<<"Nargy\n"<<gasit<<" ";
                    for(int i=1;i<=gasit;i++)
                        cout<<sol[i]<<" "<<muta[sol[i]]<<" ";
                }
                cout<<"\n";
    }


    return 0;
}