Cod sursa(job #593024)

Utilizator tiganu_dolarMancea Catalin tiganu_dolar Data 31 mai 2011 21:16:35
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<vector>
using namespace std;

#define NMAX 30005
#define pb push_back

char viz[NMAX];
vector<int> v[NMAX];
int win[NMAX],go[NMAX];
int mut[NMAX],nr,n,m,t;
int nrm;

void dfs(int nod)
{
	int i,vec,lim=v[nod].size();
	viz[nod]=1;
	for(i=0;i<lim;i++)
	{
		if(!viz[vec=v[nod][i]])
			dfs(vec);
		if(!win[vec])
		{
			win[nod]=1;		
			go[nod]=vec;
		}	
	}
}

int main ()
{
	int i,j,a,b;

	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);
		v[a].pb(b);
	}	
	for(i=1;i<=n;i++)
		if(!viz[i])
			dfs(i);
	for(i=1;i<=t;i++)
	{
		scanf("%d",&nr);
		nrm=0;
		for(j=1;j<=nr;j++)
		{
			scanf("%d",&a);
			if(win[a])
				mut[++nrm]=a;
		}	
		if(!nrm)
			printf("Fumeanu\n");
		else
		{
			printf("Nargy\n%d ",nrm);
			for(j=1;j<=nrm;j++)
				printf("%d %d ",mut[j],go[mut[j]]);
			printf("\n");	
		}	
	}		
	return 0;
}