Cod sursa(job #2875624)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 22 martie 2022 00:12:25
Problema Pioni Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <bits/stdc++.h>
#define DIM 20010
using namespace std;

vector <int> L[DIM],v,sol;
int viz[DIM],g[DIM],dp[DIM],nxt[DIM];
int n,m,t,k,x,y,i;

void dfs (int nod){
    viz[nod] = 1;
    for (auto vecin : L[nod])
        if (!viz[vecin])
            dfs (vecin);

    v.push_back(nod);
}

int main (){

    ifstream cin ("pioni.in");
    ofstream cout ("pioni.out");

    cin>>t>>n>>m;

    for (i=1;i<=m;i++){
        cin>>x>>y;
        L[x].push_back(y);
        g[y]++;
    }

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

    for (auto nod : v){
        for (auto vecin : L[nod])
            if (!dp[vecin]){
                dp[nod] = 1; /// stare de castig in punctul asta
                nxt[nod] = vecin;
            }
    }

    for (;t--;){
        cin>>k;

        sol.clear();
        for (i=1;i<=k;i++){
            cin>>x;
            if (dp[x]){
                sol.push_back(x);
                sol.push_back(nxt[x]);
            }
        }

        if (sol.empty())
            cout<<"Fumeanu\n";
        else {
            cout<<"Nargy\n";
            cout<<sol.size()/2<<" ";
            for (auto it : sol)
                cout<<it<<" ";
            cout<<"\n";
        }
    }



    return 0;
}