Pagini recente » Cod sursa (job #532896) | Cod sursa (job #1604431) | Cod sursa (job #2577913) | Cod sursa (job #2760373) | Cod sursa (job #178802)
Cod sursa(job #178802)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int nmax=20001,Inf=999999;
vector<int> s[nmax];
int t,n,m,k,win[nmax],v[30001],poz[nmax];
void calcul(int vf){
int aux,p;
vector<int>::iterator it;
win[vf]=0;
for (it=s[vf].begin();it!=s[vf].end();it++)
if (win[*it]==-1) calcul(*it);
for (it=s[vf].begin();it!=s[vf].end();it++)
if (!win[*it]) {win[vf]=1;
poz[vf]=*it;
break;}
}
int main(){
int a,b,i;
freopen("pioni.in","r",stdin);
freopen("pioni.out","w",stdout);
scanf("%d %d %d",&t,&n,&m);
for (i=1;i<=m;i++) {scanf("%d %d",&a,&b);
s[a].push_back(b);}
memset(win,-1,sizeof(win));
for (i=1;i<=n;i++)
if (win[i]==-1) calcul(i);
while (t--){
scanf("%d",&k);
for (i=1,a=0;i<=k;i++) {scanf("%d",&v[i]);
a+=win[v[i]];}
if (a) {printf("Nargy\n");
printf("%d ",a);
for (i=1;i<=k;i++) if (win[v[i]]) printf("%d %d ",v[i],poz[v[i]]);
printf("\n");}
else printf("Fumeanu\n");
}
return 0;
}