Pagini recente » Cod sursa (job #298431) | Cod sursa (job #1511058) | Cod sursa (job #56919) | Cod sursa (job #1261120) | Cod sursa (job #175621)
Cod sursa(job #175621)
#include <cstdio>
#include <cstring>
#define DIM 20002
#define INF 100005
using namespace std;
typedef struct Nod {
int vf;
Nod* next;
} NOD, *PNOD;
PNOD L[DIM];
int N, M, T, K, nr[DIM], S[3 * DIM], nxt[DIM];
void Add(int x, int y)
{
PNOD p = new NOD;
p->vf = y;
p->next = L[x];
L[x] = p;
}
int DF(int nod)
{
if (nr[nod] != -1) return nr[nod];
for (PNOD p = L[nod]; p; p = p->next)
{
int x = DF(p->vf);
if (!x)
{
nr[nod] = 1;
nxt[nod] = p->vf;
return 1;
}
}
nr[nod] = 0;
return 0;
}
int main()
{
FILE *fin = fopen("pioni.in", "r");
FILE *fout = fopen("pioni.out", "w");
fscanf(fin, "%d%d%d", &T, &N, &M);
int x, y;
for (int i = 1; i <= M; i++)
{
fscanf(fin, "%d%d", &x, &y);
Add(x, y);
}
memset(nr, -1, sizeof(nr));
for (int i = 1; i <= T; i++)
{
int win = 0;
fscanf(fin, "%d", &K);
for (int j = 1; j <= K; j++)
{
fscanf(fin, "%d", S + j);
win += DF(S[j]);
}
if (win)
{
fprintf(fout, "Nargy\n%d ", win);
for (int j = 1; j <= K; j++)
if (nr[S[j]]) fprintf(fout, "%d %d ", S[j], nxt[S[j]]);
fprintf(fout, "\n");
}
else
fprintf(fout, "Fumeanu\n");
}
fclose(fin);
fclose(fout);
return 0;
}