Cod sursa(job #2571015)

Utilizator Diamond2706Lihet Catalin Diamond2706 Data 4 martie 2020 20:29:04
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
struct nod{int info; nod *urm;};
nod *L[50010];
int n,m,x,y,viz[50010],k,st[250010];
void adauga(int i,int j)
{
    nod *p=new nod;
    p->info=j;
    p->urm=L[i];
    L[i]=p;
}
void dfs(int i)
{
    viz[i]=1;
    nod *p=new nod;
    p=L[i];
    while(p)
    {
        if(viz[p->info]==0)dfs(p->info);
        p=p->urm;
    }
    st[++k]=i;
//    for(int i=1;i<=k;i++)fout<<st[i]<<" ";
//    fout<<'\n';
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y;
        adauga(x,y);
    }
    for(int i=1;i<=n;i++)if(viz[i]==0)dfs(i);
    for(int i=k;i>=1;i--)fout<<st[i]<<" ";
    return 0;
}