Cod sursa(job #424788)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 25 martie 2010 10:40:22
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<vector>
using namespace std;
int n,m,k,t,sol[30002],sg[20002],viz[20002];
vector<int> v[20002];

void dfs(int x)
{
	viz[x]=1;
	for(vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
		if(!viz[*it])
			dfs(*it);
	for(vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
		if(sg[*it]==0)
		{
			sg[x]=*it;
			break;
		}
}

int main()
{
	freopen("pioni.in","r",stdin);
	freopen("pioni.out","w",stdout);
	scanf("%d%d%d",&t,&n,&m);
	int i,x,y;
	for(i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y);
		v[x].push_back(y);
	}
	for(i=1;i<=n;i++)
		if(!viz[i])
			dfs(i);
	int ok;
	while(t--)
	{
		scanf("%d",&k);
		ok=0;
		for(i=1;i<=k;i++)
		{
			scanf("%d",&sol[i]);
			if(sg[sol[i]])
				ok++;
		}
		if(ok==0)
		{
			printf("Fumeanu\n");
			continue;
		}
		printf("Nargy\n");
		printf("%d ",ok);
		for(i=1;i<=k;i++)
			if(sg[sol[i]])
				printf("%d %d ",sol[i],sg[sol[i]]);
		printf("\n");
	}
	return 0;
}