Cod sursa(job #157822)

Utilizator catalin_olariOlari Catalin Georgel catalin_olari Data 13 martie 2008 12:01:18
Problema Sortare topologica Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream.h>


struct nod{int info;
		   nod *urm;
		   };

int n,m; nod *lista[50001];

void adaug(nod *&p,int x)
{
 nod *q=new nod();
 q->info=x;
 q->urm=p;
 p=q;
}

void citire()
{ifstream f("sortaret.in");
 f>>n>>m;
 int x1,x2;
 while(f>>x1>>x2)
	adaug(lista[x1],x2);
 f.close();
}








int are_tata(int varf)
{nod *p;
 for(int i=1;i<=n;i++)
	{p=lista[i];
	 while(p)
	 { 	if(p->info==varf)
			return 1;
	  p=p->urm;
	 }
	}

 return 0;
}




int main()
{int N,i,t[50001]={0};
 citire();
 N=n;

 ofstream g("sortaret.out");

 while(N>=1)
 {

 for(i=1;i<=n;i++)
	if(t[i]!=-1)
		t[i]=are_tata(i);


 for(i=1;i<=n;i++)
	if(t[i]==0)
		{g<<i<<" ";
		 t[i]=-1;
		 lista[i]=NULL;

		  N--;
		  }
		}



g.close();

return 0;
}