Cod sursa(job #431660)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 1 aprilie 2010 11:36:11
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<cstdio>
#include<vector>
using namespace std;
int t,n,m,win,l,s[20010],a[30010];
bool f[20010];
vector<int> v[20010];
void dfs(int i)
{
	f[i]=true;
	for(vector<int>::iterator it=v[i].begin();it!=v[i].end();it++)
		if(!f[*it])
			dfs(*it);
	for(vector<int>::iterator it=v[i].begin();it!=v[i].end();it++)
		if(s[*it]==0)
		{
			s[i]=*it;
			break;
		}
}
int main()
{
	freopen("pioni.in","r",stdin);
	freopen("pioni.out","w",stdout);
	scanf("%d%d%d",&t,&n,&m);
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		v[x].push_back(y);
	}
	for(int i=1;i<=n;i++)
		if(!f[i])
			dfs(i);
	for(int j=1;j<=t;j++)
	{
		scanf("%d",&l);
		win=0;
		for(int i=1;i<=l;i++)
		{
			scanf("%d",&a[i]);
			if(s[a[i]])
				win++;
		}
		if(win==0)
			printf("Fumeanu\n");
		else
		{
			printf("Nargy\n");
			printf("%d ",win);
			for(int i=1;i<=l;i++)
				if(s[a[i]])
					printf("%d %d ",a[i],s[a[i]]);
			printf("\n");
		}
	}
	return 0;
}