Cod sursa(job #931192)

Utilizator radu193Constantinescu Radu radu193 Data 28 martie 2013 01:57:34
Problema Sortare topologica Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.96 kb
#include<stdio.h>

#include<stdlib.h>

#include<stdio.h>

   
#define N 50001
typedef struct nod {
	int val;
	nod *next;
} *pnod, node;	


pnod l[N], st = NULL;
int m,n, viz[N];

void add(int x)
{
	pnod p = (pnod)malloc(sizeof(node));
	p->val = x;
	p->next = st;
	st = p;
}
void df(int x)
{	
	viz[x] = 1;
	
	for(pnod p = l[x]; p; p = p->next)
		if(!viz[p->val])
			df(p->val);
	add(x);
}
void afi()
{
	freopen("sortaret.out", "w", stdout);
	for (pnod p = st; p; p = p->next)
		printf("%i ", p->val);
}
int main()
{	
	
	int x,y;
	//long te,ts;
	//ts = GetTickCount();
  
  
	
	freopen("sortaret.in", "r", stdin);
	scanf("%i%i", &n, &m);
	for (;m>0; m--)
	{
		scanf("%i%i", &x, &y);
		pnod p = (pnod)malloc(sizeof(node));
		p->val = y;
		p->next = l[x];
		l[x] = p;
		
	}
	
	for(int i = 1; i <= n; i++)
		if(!viz[i])
			df(i);
	afi();
	
	//te =  GetTickCount();
	//printf("%f\n", (double)(te-ts)/1000);
	return 0;

}