Cod sursa(job #1939808)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 26 martie 2017 00:27:00
Problema Pioni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
#include <cmath>
#define MaxN 20005
using namespace std;
  
FILE*IN,*OUT;

int T,N,M,K,X,Y,son[MaxN],Stack[MaxN],Size=0;
vector <int> Graph[MaxN];
bool found[MaxN],Pos[MaxN];
void DFS(int node)
{
	found[node]=true;
	for(int i=0;i<Graph[node].size();i++)
	{
		if(!found[Graph[node][i]])
			DFS(Graph[node][i]);
		if(Pos[Graph[node][i]]==false)
			Pos[node]=true,son[node]=Graph[node][i];
	}
}
int main()
{
    IN=fopen("pioni.in","r");
    OUT=fopen("pioni.out","w");

	fscanf(IN,"%d%d%d",&T,&N,&M);

	for(int i=1;i<=M;i++)
	{
		fscanf(IN,"%d%d",&X,&Y);
		Graph[X].push_back(Y);
	}
	for(int i=1;i<=N;i++)if(!found[i])DFS(i);
	for(int t=1;t<=T;t++)
	{
		fscanf(IN,"%d",&K);
		Size=0;
		for(int i=1;i<=K;i++)
		{
			fscanf(IN,"%d",&X);
			if(Pos[X])
				Stack[++Size]=X;
		}
		if(Size==0)
			fprintf(OUT,"Fumeanu\n");
		else
		{
			fprintf(OUT,"Nargy\n%d ",Size);
			for(int i=1;i<=Size;i++)
				fprintf(OUT,"%d %d ",Stack[i],son[Stack[i]]);
			fprintf(OUT,"\n");
		}
	}
	return 0;
}