Cod sursa(job #596269)

Utilizator SpiderManSimoiu Robert SpiderMan Data 16 iunie 2011 16:58:44
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
# include <cstdio>
# include <cstring>
# include <vector>
using namespace std;

const char *FIN = "pioni.in", *FOU = "pioni.out";
const int MAX_N = 20005, MAX_K = 30005;

int T, N, M, kn[MAX_K], wh[MAX_N], see[MAX_K];
char viz[MAX_N];
vector <int> V[MAX_N];

int dfs (int N) {
    if (viz[N] != -1) return viz[N];
    else viz[N] = 0;
    for (vector <int> :: iterator i = V[N].begin (); i != V[N].end (); ++i) {
        if (dfs (*i)) continue;
        viz[N] = 1, wh[N] = *i;
        break ;
    }
    return viz[N];
}

int main (void) {
    memset (viz, -1, sizeof (viz));
    freopen (FIN, "r", stdin);
    freopen (FOU, "w", stdout);

    scanf ("%d %d %d", &T, &N, &M);
    for (int i = 0, a, b; i < M; ++i) {
        scanf ("%d %d", &a, &b);
        V[a].push_back (b);
    }
    for (int K = 0, verf = 0; T; --T) {
        scanf ("%d", &K), verf = 0;
        for (int i = 0; i < K; ++i) {
            scanf ("%d", kn + i);
            verf += (see[i] = dfs (kn[i]));
        }
        if (verf == 0) {
            printf ("Fumeanu\n");
        } else {
            printf ("Nargy\n%d ", verf);
            for (int i = 0; i < K; ++i)
                if (see[i])
                    printf ("%d %d ", kn[i], wh[kn[i]]);
            printf ("\n");
        }
    }
}