Cod sursa(job #134434)

Utilizator VmanDuta Vlad Vman Data 11 februarie 2008 18:56:46
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
using namespace std;
#include <stdio.h>
#include <vector>

#define Nmax 20002
#define Kmax 30002

int N,M,T,K,a,b,i;
int p[Kmax];
char was[Nmax];
int SG[Nmax];
vector<int> G[Nmax];

int dfs(int nod)
{
 int nr=0;
 vector<int> :: iterator it;
 was[nod]=1;
 for (it=G[nod].begin(); it<G[nod].end(); ++it)
     if (!was[*it])
        if (dfs(*it)==0) SG[nod]=*it;
           else ;
      else if (SG[*it]==0) SG[nod]=*it;
 return SG[nod];
}

int main()
{
 freopen("pioni.in","r",stdin);
 freopen("pioni.out","w",stdout);
 scanf("%d %d %d",&T,&N,&M);
 for (i=0;i<M;++i)
     {
      scanf("%d %d",&a,&b);
      G[a].push_back(b);
     }
 for (i=1;i<=N;++i)
     if (!was[i]) dfs(i);
 while (T)
       {
        --T;
        scanf("%d",&K);
        a=0;
        for (i=0;i<K;++i)
            {
             scanf("%d",&p[i]);
             if (SG[p[i]]) ++a;
            }
        if (a)
           {
            printf("Nargy\n");
            printf("%d ",a);
            for (i=0;i<K;++i)
                if (SG[p[i]]) printf("%d %d ",p[i],SG[p[i]]);
            printf("\n");
           }
           else printf("Fumeanu\n");
       }
 fclose(stdin);
 fclose(stdout);
 return 0;
}