Cod sursa(job #1466920)

Utilizator icansmileSmileSmile icansmile Data 31 iulie 2015 22:17:49
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
using namespace std;
fstream f("sortaret.in",ios::in);
fstream g("sortaret.out",ios::out);
struct nod{
	int succ;
	nod* urm;};
int n,m,i,j,k,gasit;
int contor[100],c[100];
nod *a[100];
void adaug(int i,int j)
{
	nod *c,*d;
	contor[j]++;
	c=a[i];
	d=new nod;
	d->urm=0;
	d->succ=j;
	if(c==0)
	a[i]=d;
	else
	{while(c->urm)
	c=c->urm;
	c->urm=d;}
}
void actual(int i)
{
	nod *c=a[i];
	while(c)
	{
		contor[c->succ]--;
		c=c->urm;}
	}
int main()
{
	int n,m,p,q,i,j;
	f>>n;
	f>>m;
	for(i=1;i<=m;i++)
	{contor[i]=0;
	a[i]=0;}
	p=m;
	while(p)
	{
		f>>i>>j;
		adaug(i,j);
		p--;
	}
q=m;
do
{
	k=1;gasit=0;
	for(i=1;i<=q;i++)
	if(contor[i]==0)
	{
		gasit=1;
		m--;
		c[k]=i;
		k++;
		contor[i]=-1;}
	for(i=1;i<=k-1;i++)
	{
		actual(c[i]);
		g<<c[i]<<" ";	}
	}
while(gasit&&m);
if(m)
g<<-1;
return 0;}