Cod sursa(job #134122)

Utilizator filipbFilip Cristian Buruiana filipb Data 10 februarie 2008 18:45:42
Problema Pioni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
#include <string.h>
#include <vector>

using namespace std;

#define NMax 20005

int T, N, M, K, sg[NMax], to[NMax], v[30005];
vector<int> G[NMax];

void det(int nod)
{
    int i, sz, x;

    if (sg[nod] != -1)
        return ;

    sg[nod] = 0;
    for (sz = G[nod].size(), i = 0; i < sz; i++)
        if (!sg[G[nod][i]])
        {
            sg[nod] = 1;
            to[nod] = G[nod][i];
            break;
        }
}

int main(void)
{
    int i, j;
    
    freopen("pioni.in", "r", stdin);
    freopen("pioni.out", "w", stdout);

    scanf("%d %d %d", &T, &N, &M);
    for (; M; M--)
    {
        scanf("%d %d", &i, &j);
        G[i].push_back(j);
    }

    memset(sg, -1, sizeof(sg));
    for (i = 1; i <= N; i++)
        det(i);
    
    for (; T; T--)
    {
        scanf("%d", &K);
        for (i = 1; i <= K; i++)
            scanf("%d", &v[i]);
        for (i = 1, j = 0; i <= K; i++)
            j += sg[v[i]];
        if (j)
        {
            printf("Nargy\n%d", j);
            for (i = 1; i <= K; i++)
                if (sg[v[i]])
                    printf(" %d %d", v[i], to[v[i]]);
            printf("\n");
        }
        else
            printf("Fumeanu\n");
    }

    return 0;
}