Cod sursa(job #1984971)

Utilizator miruna999Morarasu Miruna miruna999 Data 26 mai 2017 17:15:14
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
struct nod{int nr; nod *urm;}*a[500001];
stack <int> s; int n,m;
bool viz[50001];

void citire()
{
    f>>n>>m;
    int i,x,y;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        nod *p=new nod;
        p->urm=a[x];
        p->nr=y;
        a[x]=p;
    }
}

void df(int k)
{
    viz[k]=true;
    for(nod *p=a[k];p!=NULL;p=p->urm)
        if(!viz[p->nr])
            df(p->nr);
    s.push(k);
}

int main()
{
    citire();
    for(int i=1;i<=n;i++)
        if(!viz[i])
            df(i);
    while(!s.empty())
        g<<s.top()<<" ",s.pop();
    return 0;
}