Cod sursa(job #944405)

Utilizator deneoAdrian Craciun deneo Data 28 aprilie 2013 13:45:01
Problema Pioni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("pioni.in");
ofstream fout("pioni.out");

const int MAXN = 21000;

int N, M, T;
int win[MAXN], move[MAXN], viz[MAXN];
vector<int> graph[MAXN];

void dfs(int nod) {
    viz[nod] = 1;
    for (int i = 0; i < graph[nod].size(); ++i) {
        int node = graph[nod][i];
        if (!viz[node])
            dfs(node);

        if (!win[node]) {
            win[nod] = 1;
            move[nod] = node;
        }
    }
}

int main() {
    fin >> T >> N >> M;

    for (int i = 1; i <= M; ++i) {
        int a, b;
        fin >> a >> b;
        graph[a].push_back(b);
    }

    for (int i = 1; i <= N; ++i) {
        if (!viz[i])
            dfs(i);
    }

    for (;T; --T) {
        int K, sol[MAXN];
        fin >> K;

        sol[0] = 0;

        for (int i = 1; i <= K; ++i) {
            int a;
            fin >> a;
            if (win[a])
                sol[++sol[0]] = a;
        }

        if (sol[0] == 0)
            fout << "Fumeanu\n";
        else {
            fout << "Nargy\n" << sol[0] << " ";
            for (int i = 1; i <= sol[0]; ++i)
                fout << sol[i] << " " << move[sol[i]] << " ";
            fout << "\n";
        }
    }

    return 0;

}