Cod sursa(job #2091035)

Utilizator serjiuuAvacaritei Sergiu serjiuu Data 19 decembrie 2017 02:55:36
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<list>
#include<deque>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int nmax=50005;
list<int>a[nmax];
int n,m,c[nmax];
void read_data()
{
    int i,x,y;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        a[x].push_back(y);
        c[y]++;
    }
}
void dfs(int nod)
{
    c[nod]=-1;
    fout<<nod<<' ';
    for(list<int>::iterator it=a[nod].begin();it!=a[nod].end();it++)
    {
        c[*it]--;
        if(c[*it]==0)
            dfs(*it);
    }
}
void topological_sort()
{
    int i,nod;
    list<int>::iterator it;
    deque<int>d;
    for(i=1;i<=n;i++)
        if(c[i]==0)
            dfs(i);
}
int main()
{
    read_data();
    topological_sort();
}