Cod sursa(job #214641)

Utilizator MciprianMMciprianM MciprianM Data 15 octombrie 2008 14:55:56
Problema Pioni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
using namespace std;
int t,n,m;
struct nod{
  int vec;
  nod* urm;
};
int nnnn;
nod* LA[20001];
bool PozCastig[20001];
int pioni[30001];
int poz[20001];
void push(int a, int b){
  nod*p=new nod;
  p->vec=b;
  if(LA[a])  p->urm=LA[a];
  else p->urm=0;
  LA[a]=p;
}
void df(int x){
  nod* q;
  q=LA[x];
  while(q){
    if(PozCastig[q->vec]){
      PozCastig[x]=0;
      poz[x]=q->vec;
      return ;
    }
    df(q->vec);
    q=q->urm;
  }
  PozCastig[x]=1;
}
int main(){
  int i;
  int a,b;
  int are;
  int pion;
  ifstream f("pioni.in");
  ofstream g("pioni.out");
  f>>t>>n>>m;

  for(i=0;i<m;i++){
    f>>a>>b;
    push(a,b);
  }


  for(nnnn=1;nnnn<=n;nnnn++)
    df(nnnn);

  while(t--){
    int nr;
    are=0;
    f>>nr;
    for(i=0;i<nr;i++){
      f>>pioni[i];
      if(PozCastig[pioni[i]]==0)
        are++;
    }
    if(are){
      g<<"Nargy\n"<<are<<' ';
       for(i=0;i<nr;i++){
         if(PozCastig[pioni[i]]==0){
           g<<pioni[i]<<' '<<poz[pioni[i]]<<' ';
         }
       }
       g<<'\n';
    }
    else g<<"Fumeanu\n";
  }
  f.close();
  g.close();
  return 0;
}