Cod sursa(job #543110)

Utilizator Ast09Stoica Anca Ast09 Data 27 februarie 2011 16:04:40
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream.h>
ifstream f("sortaret.in");
ofstream g("sortaret.out");
struct nod
	{int nr;
	 nod *urm;};
nod *v[50001],*p,*q,*prim,*ultim;
int x,y,n,m,u[50001];
int main()
{ int i;
  f>>n>>m;
  for(i=1;i<=m;i++)
	  {f>>x>>y;
	   p=new nod;
	   p->nr=y;
	   p->urm=v[x];
	   v[x]=p;
	   u[y]++;
	  }
  for(i=1;i<=n;i++)
	  if(u[i]==0)
		  {p=new nod;
		   p->nr=i;
		   p->urm='\0';
		   if(!prim) prim=ultim=p;
			   else ultim->urm=p, ultim=p;
		  }
  while(prim)
	  {g<<prim->nr<<' ';
	   p=v[prim->nr];
	   while(p)
		   {u[p->nr]--;
		    if(u[p->nr]==0)
				{q=new nod;
				 q->nr=p->nr;
				 q->urm='\0';
				 ultim->urm=q;
				 ultim=q;
				}
			p=p->urm;
		   }
	   prim=prim->urm;
	  }
  g<<'\n';
  f.close(); g.close();
  return 0;
}