Cod sursa(job #1936419)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 23 martie 2017 08:22:08
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <cstdio>
#include <vector>
#include <bitset>
using namespace std;
FILE *f=fopen("pioni.in","r");
FILE *g=fopen("pioni.out","w");
bool castig[20005];
int nxt[20005];
vector<int> G[20005];
bitset<200005> B;
int N,M,T;
vector<pair<int,int> > V;
void dfs(int nod)
{
    B[nod]=1;
    for(auto it:G[nod])
    {
        if(!B[it])
            dfs(it);
        if(castig[it]==0)
        {
            castig[nod]=1;
            nxt[nod]=it;
        }

    }
}
int main()
{
    fscanf(f,"%d%d%d",&T,&N,&M);
    for(int i=1;i<=M;i++)
    {
        int x,y;
        fscanf(f,"%d %d",&x,&y);
        G[x].push_back(y);
    }
    for(int i=1;i<=N;i++)
        if(!B[i])
            dfs(i);
    for(int i=1;i<=T;i++)
    {
        V.clear();
        int K;
        fscanf(f,"%d",&K);
        for(int i=1;i<=K;i++)
        {
            int val;
            fscanf(f,"%d",&val);
            if(castig[val])
                V.push_back(make_pair(val,nxt[val]));
        }
        if(V.size()==0)
            fprintf(g,"Fumeanu\n");
        else
        {
            fprintf(g,"Nargy\n%d ",V.size());
            for(auto it:V)
                fprintf(g,"%d %d ",it.first,it.second);
            fprintf(g,"\n");
        }
    }
    fclose(f);
    fclose(g);
    return 0;
}