Cod sursa(job #1307111)

Utilizator refugiatBoni Daniel Stefan refugiat Data 1 ianuarie 2015 10:17:43
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<iostream>
#include<fstream>
#include<list>
#include<bitset>
#include<stack>
using namespace std;
list<int> l[50003];
stack<int> s;
void util(int n,bool v[])
{
    v[n]=1;
    list<int>::iterator i;
    for(i=l[n].begin();i!=l[n].end();++i)
        if(v[*i]==0)
        {
            util(*i,v);
        }
    s.push(n);
}
void tsort(int n)
{
    int i;
    bool v[n];
    for(i=0;i<n;++i)
        v[i]=0;
    for(i=0;i<n;++i)
    {
        if(v[i]==0)
            util(i,v);
    }
}
int main()
{
    ifstream si;
    si.open("sortaret.in");

    ofstream so;
    so.open("sortaret.out");
    int n,m;
    si>>n>>m;
    int a,b,i;
    for(i=0;i<m;++i)
    {
        si>>a>>b;
        --a;
        --b;
        l[a].push_back(b);
    }
    tsort(n);
    while(s.size()>0)
    {
        so<<s.top()+1<<' ';
        s.pop();
    }
}