Cod sursa(job #2011814)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 17 august 2017 12:16:24
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream si("pioni.in");
ofstream so("pioni.out");
vector<int>v[20005];
bitset<20005> cast;
bitset<20005> parc;
int demut[20005];
bool verif(int x)
{
    if(parc[x])
        return cast[x];
    bool cas=false;
    int n=v[x].size();
    bool q;

    for(int i=0;i<n;++i)
    {
        q=verif(v[x][i]);
        cas=(cas||!q);
        if(q==false)
            demut[x]=v[x][i];
    }
    parc[x]=1;
    cast[x]=cas;
    return cas;
}
int mutat[20005];
int main()
{
    int q;
    si>>q;
    int n,m;
    si>>n>>m;
    int i,a,b;
    for(i=0;i<m;++i)
    {
        si>>a>>b;
        v[a].push_back(b);
    }
    for(i=1;i<=n;++i)
    {
        verif(i);
    }
    int x;
    while(q--)
    {
        si>>x;
        b=0;
        for(i=0;i<x;++i)
        {
            si>>a;
            if(cast[a])
            {
                ++b;
                mutat[a]++;
            }
        }
        if(b)
        {
            so<<"Nargy\n"<<b<<' ';
            for(i=1;i<=n;++i)
            {
                while(mutat[i]--)
                {
                    so<<i<<' '<<demut[i]<<' ';
                }
                mutat[i]=0;
            }
        }
        else
            so<<"Fumeanu";
        so<<'\n';
    }
    return 0;
}