Cod sursa(job #457651)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 20 mai 2010 20:25:48
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
using namespace std;
#include <fstream>
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

int n, m, s[50005], nr;
 
struct nod
{
    int inf;
    nod *urm;
} * v[50005],*prim;
 
void add(nod *&prim, int val)
{
    nod * p;
    p = new nod;
    p -> inf = val;
    p -> urm = prim;
    prim = p;
}
 
void citire()
{
    fin>>n>>m;
    int i, x, y;
 
    for (i = 1; i <= m; i++)
    {
        fin>>x>>y;
        add(v[x], y);
	}
}
 
void dfs(int x)
{
    nod * p;
    s[x] = 1;
    for (p = v[x]; p != NULL; p = p -> urm) if (!s[p -> inf]) dfs(p -> inf);
	add(prim,x);
}  
 
int main()
{
    citire();
    for (int i = 1; i <= n; i++) 
		if (!s[i]) 
		  { dfs(i);nr++;}
    for  (nod* p = prim; p; p = p->urm )
         fout<<p->inf<<" ";
    return 0;
}