Cod sursa(job #979107)

Utilizator Daniel3717Aleca Daniel Adrian Daniel3717 Data 31 iulie 2013 18:42:29
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
struct la
{
    int ind;
    la *urm;
} *p;
struct vla
{
    la *urm;
    int stare;
} v[50003];
int r[50003],nr,n,m,i,x,y;
int go(int x)
{
    la *p;
    p=v[x].urm;
    v[x].stare=2;
    while (p->urm!=NULL)
    {
        if (v[p->ind].stare==0)
            go(p->ind);
        p=p->urm;
    }
    v[x].stare=1;
    nr++;
    r[nr]=x;
    return 0;

}
int main(void)
{
    FILE * f;
    f=fopen("sortaret.in","r");
    ofstream g("sortaret.out");
    fscanf(f,"%d%d",&n,&m);
    for (i=1;i<=n;i++)
    {
        p=new(la);
        p->ind=0;
        p->urm=NULL;
        v[i].urm=p;
    }
    for (i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        p=new(la);
        p->ind=y;
        p->urm=v[x].urm;
        v[x].urm=p;
    }
    for (i=1;i<=n;i++)
        if (v[i].stare==0)
            go(i);
    for (i=nr;i>=1;i--)
        g<<r[i]<<' ';
    g.close();
    return 0;
}