Cod sursa(job #710347)

Utilizator valentina506Moraru Valentina valentina506 Data 9 martie 2012 14:34:54
Problema Pioni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,k,t,i,j,d[20010],x,y,pion,maxim;
vector<int> a[20010];
bool uz[20010];
void df(int x)
{
	int i;
	uz[x]=1;
	for(i=0;i<a[x].size();++i)
	{
		if(a[a[x][i]].size())
		df(a[x][i]);
		else
			d[a[x][i]]=0;
		
		if(d[x]==1<<30)
			d[x]=d[a[x][i]]+1;
		else
		if(d[x]%2==0)
		{
			if(d[a[x][i]]+1<d[x]||d[a[x][i]]%2==0)
				d[x]=d[a[x][i]]+1;
		}
		else
			if(d[x]%2==1)
			{
				if(d[a[x][i]]%2==0&&d[a[x][i]]+1<d[x])
					d[x]=d[a[x][i]]+1;
			}
		
	}
}
	

int main()
{
	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",&x,&y);
		a[x].push_back(y);
	}
	for(i=1;i<=n;++i)
		d[i]=1<<30;
	for(i=1;i<=n;++i)
		if(!uz[i])
			df(i);
		while(t)
		{
			--t;
			maxim=0;
			scanf("%d",&k);
			for(i=1;i<=k;++i)
			{
				scanf("%d",&pion);
				if(d[pion]>maxim)
					maxim=d[pion];
			}
			if(maxim%2==1)
				printf("Nargy\n");
			else
				printf("Fumeanu\n");
		}
				
	return 0;
}