Cod sursa(job #505877)

Utilizator c_adelinaCristescu Adelina c_adelina Data 4 decembrie 2010 12:16:45
Problema Pioni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#include <vector>
#include <deque>
#include <cstring>
#define N 20002
#define pb push_back
#define ba back()
#define p_b pop_back()
using namespace std;

vector <int> v[N];
int ok[N];

int main()
{
	int n,m,t,i,j,a,b,dest[N],da,s[N];
	
	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);
		ok[a]=1;
		v[b].pb(a);
	}
	
	deque <int> d;
	for (i=1;i<=n;++i) 
		if (ok[i]) ok[i]=0; else d.pb(i);
	while (!d.empty())
	{
		a=d.ba;d.p_b;
		while (!v[a].empty())
		{
			b=v[a].ba;v[a].p_b;
			if (ok[b]<1-ok[a]) ok[b]=1,dest[b]=a;
			d.pb(b);
		}
	}
	
	
	while (t--)
	{
		scanf("%d",&a);j=0;
		memset(s,0,sizeof(s));
		while (a--)
		{
			scanf("%d",&b);
			++s[b];
			if (ok[b]) ++j;
		}
		if (j)
		{
			printf("Nargy\n%d",j);
			for (i=1;i<=n;++i)
				if ((s[i]) && (ok[i]))
					while (s[i]--)
						printf(" %d %d",i,dest[i]);
			printf("\n");		
		} else
			printf("Fumeanu\n");
				
	}
	
	
	return 0;
}