Pagini recente » Cod sursa (job #941646) | Cod sursa (job #91844) | Cod sursa (job #2002471) | Cod sursa (job #171468) | Cod sursa (job #418878)
Cod sursa(job #418878)
#include<stdio.h>
#include<vector>
using namespace std;
#define Nmax 20005
#define inf 0x3f3f3f3f
int N,T,nr[Nmax],t[Nmax],val[Nmax],p[Nmax];
vector <int> l[Nmax];
int c[Nmax];
int s[Nmax];
void BF()
{
int st,dr=0,nod;
for(int i=1;i<=N;++i)
{
val[i]=inf;
if (!nr[i])
c[++dr]=i;
}
for(st=1;st<=dr;++st)
{
if (!t[c[st]] && val[c[st]]!=inf)
t[c[st]]=val[c[st]];
for(int i=0;i<(int)l[c[st]].size();++i)
{
nod=l[c[st]][i];
nr[nod]--;
if (t[c[st]]%2>0)
if (val[nod] && val[nod] > 1+t[c[st]])
{
val[nod] = 1+t[c[st]];
p[nod] = c[st];
}
else;
else
{
if (t[nod] < 1+t[c[st]])
{
t[nod] = 1+t[c[st]];
p[nod] = c[st];
}
val[nod]=0;
}
if (!nr[nod])
c[++dr]= nod;
}
}
}
void solve()
{
BF();
int M,a,Sol;
for(int i=1;i<=T;++i)
{
scanf("%d",&M);
Sol=0;
for(int j=1;j<=M;++j)
{
scanf("%d",&s[j]);
Sol = max(Sol,t[s[j]]);
}
if (Sol%2==1)
{
printf("Nargy\n");
printf("%d ",M);
for(int j=1;j<=M;++j)
printf("%d %d ",s[j],p[s[j]]);
printf("\n");
}
else
printf("Fumeanu\n");
}
}
void cit();
int main()
{
cit();
solve();
return 0;
}
void cit()
{
int a,b,M;
freopen("pioni.in","r",stdin);
freopen("pioni.out","w",stdout);
scanf("%d%d%d",&T,&N,&M);
for(int i=1;i<=M;++i)
{
scanf("%d %d\n",&a,&b);
l[b].push_back(a);
nr[a]++;
}
}