Cod sursa(job #2652064)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 24 septembrie 2020 11:01:06
Problema Pioni Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pioni.in");
ofstream fout("pioni.out");
const int NMAX = 20005;
const int KMAX = 30005;
int T,n,m,k,x,y;
int ver[NMAX],sg[NMAX],a[KMAX];
int mex[NMAX];
vector <int> v[NMAX];
void dfs(int nod){
    ver[nod]=1;
    for(int i=0;i<v[nod].size();i++){
        int vecin=v[nod][i];
        if(ver[vecin]==0){
            dfs(vecin);
        }
    }
    for(int i=0;i<v[nod].size();i++){
        int vecin=v[nod][i];
        //mex[sg[vecin]]=true;
        if(sg[vecin]==0){
            sg[nod]=vecin;
            break;
        }
    }
    /*bool ok=true;
    for(int i=0;i<=n;i++){
        if(mex[i]==false and ok==true){
            sg[nod]=i;
            ok=false;
        }
        mex[i]=false;
    }*/
}
int main()
{
    fin >> T >> n >> m;
    for(int i=1;i<=m;i++){
        fin >> x >> y;
        v[x].push_back(y);
    }
    for(int i=1;i<=n;i++){
        if(ver[i]==0) dfs(i);
    }
    for(int t=1;t<=T;t++){
        fin >> k;
        int ind=0,rasp=0;
        for(int i=1;i<=k;i++){
            fin >> a[i];
            //rasp^=sg[a[i]];
            if(sg[a[i]]!=0){
                ind++;
            }
        }
        //fout << rasp << '\n' << '\n';
        if(ind==0){
            fout << "Fumeanu" << '\n';
            continue;
        }
        fout << "Nargy" << '\n';
        fout << ind << ' ';
        for(int i=1;i<=k;i++){
            if(sg[a[i]]!=0)
                fout << a[i] << ' ' << sg[a[i]] << ' ';
        }
        fout << '\n';
    }
    /*fout << '\n';
    fout << sg[1] << ' ' << sg[2] << ' ' << sg[3] << ' ' << sg[4] << '\n';
    fout << sg[4] << '\n';
    for(int i=0;i<v[4].size();i++)
        fout << sg[v[4][i]] << ' ';*/
    return 0;
}