Cod sursa(job #1086844)

Utilizator alexsuciuAlex Suciu alexsuciu Data 18 ianuarie 2014 16:41:53
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>
using namespace std;

int n,m,x,y,i,k,viz[60000];
ifstream f("sortaret.in");
ofstream g("sortaret.out");

struct nod
{
    int val;
    nod *next;
};
nod *p,*l[60000],*pi;

void creaza(int x,nod *&pi)
{nod *c;
   if(!pi)
    {pi=new nod;
    pi->val=x;
    pi->next=NULL;}
    else
    {
        c=new nod;
        c->val=x;
        c->next=pi;
        pi=c;
    }

}

void dfs(int x)
{nod *p;
    viz[x]=1;
    for(p=l[x];p;p=p->next)
        if(!viz[p->val]) dfs(p->val);
        creaza(x,pi);

}

void afisare(nod *pi)
{
    nod *c=pi;
    while (c)
    {
        g<<c->val<<" ";
        c=c->next;
    }
}


int main()
{
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        p=new nod;
        p->val=y;
        p->next=l[x];
        l[x]=p;
    }
    for(i=1;i<=n;i++)
        if(!viz[i]) dfs(i);
    afisare(pi);

}