Cod sursa(job #1570052)

Utilizator ZanoxNonea Victor Zanox Data 16 ianuarie 2016 10:25:54
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <cstring>
#include <stdlib.h>
#include <fstream>
#include <cmath>
#include <algorithm>

using namespace std;

int c_mod(int a, int b)
{
    if(a%b>=0)return a%b;
    return a%b+b;
}

int c_div(int a, int b)
{
    if(a%b>=0)return a/b;
    return a/b-1;
}

fstream f,g;

char start[50001];

struct lst
{
    int inf;
    lst *urm;
};

struct nod
{
    lst *p,*u;
}v[50001];

int i,j,k,l,n,m;

void search(int i)
{
    lst *u;
    for(u=v[i].p;u!=NULL;u=u->urm)search(u->inf);
    g<<i<<' ';
}

int main()
{
    f.open("sortaret.in",ios_base::in);
    g.open("sortaret.out",ios_base::out);
    f>>n>>m;
    lst *t;
    for(i=1;i<=m;i++)
    {
        f>>j>>k;
        start[j]=1;
        t=new lst;
        t->inf=j;
        t->urm=NULL;
        if(v[k].p==NULL)
        {
            v[k].p=t;
        }
        else
        {
            v[k].u->urm=t;
        }
        v[k].u=t;
    }
    for(i=1;i<=n;i++)if(start[i]==0)search(i);
}