Pagini recente » Cod sursa (job #2263) | Cod sursa (job #1778832) | Cod sursa (job #3217769) | test_mustang | Cod sursa (job #133589)
Cod sursa(job #133589)
#include <stdio.h>
#include <string.h>
#include <vector>
using namespace std;
#define MAX_N 20005
#define MAX_K 30005
#define FIN "pioni.in"
#define FOUT "pioni.out"
int T, N, M, K, move[MAX_N], pos[MAX_K];
char win[MAX_N];
vector<int> G[MAX_N];
int solve(int n)
{
char &ret = win[n];
vector<int>::iterator it;
if (ret != -1) return ret;
ret = 0;
for (it = G[n].begin(); it != G[n].end(); ++it)
if (!solve(*it)) { ret = 1; move[n] = *it; break; }
return ret;
}
int main(void)
{
int i, j, cnt;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
memset(win, -1, sizeof(win));
for (scanf("%d %d %d", &T, &N, &M); M; --M)
{
scanf("%d %d", &i, &j);
G[i].push_back(j);
}
for (; T; --T)
{
scanf("%d", &K);
for (cnt = i = 0; i < K; ++i)
{
scanf("%d", pos+i);
cnt += solve(pos[i]);
}
if (!cnt) { printf("Fumeanu\n"); continue; }
printf("Nargy\n%d", cnt);
for (i = 0; i < K; ++i)
if (solve(pos[i])) printf(" %d %d", pos[i], move[pos[i]]);
printf("\n");
}
return 0;
}