Cod sursa(job #1960410)

Utilizator akaprosAna Kapros akapros Data 10 aprilie 2017 13:39:07
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <bits/stdc++.h>
#define maxN 20002
using namespace std;

FILE *fin = freopen("pioni.in", "r", stdin);
FILE *fout = freopen("pioni.out", "w", stdout);

/* ====================== */
int n, m, k, t;
vector < int > V[maxN];
/* ====================== */
bool win[maxN];
int vis[maxN];
int st[maxN];
/* ====================== */
int ans[maxN];

void dfs(int nod)
{
    vis[nod] = 1;
    win[nod] = 0;
    for (int son : V[nod])
    {
        if (!vis[son])
            dfs(son);
        if (!win[son])
        {
            win[nod] = 1;
            st[nod] = son;
        }
    }
}

int main()
{
    scanf("%d %d %d", &t, &n, &m);
    for (int i = 1; i <= m; ++ i)
    {
        int x, y;
        scanf("%d %d", &x, &y);
        V[x].push_back(y);
    }
    for (int i = 1; i <= n; ++ i)
        dfs(i);

    while (t --)
    {
        scanf("%d", &k);
        ans[0] = 0;
        while (k --)
        {
            int nod;
            scanf("%d", &nod);
            if (win[nod])
                ans[++ ans[0]] = nod;
        }
        if (!ans[0])
            printf("Fumeanu\n");
        else
        {
            printf("Nargy\n%d ", ans[0]);
            for (int i = 1; i <= ans[0]; ++ i)
                printf("%d %d ", ans[i], st[ans[i]]);
            printf("\n");
        }
    }

    return 0;
}