Cod sursa(job #2527853)

Utilizator CarlaDianaCarla Diana CarlaDiana Data 20 ianuarie 2020 21:59:04
Problema Sortare topologica Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#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,a,b,st[50010],niv;
bool viz[50010];
void add(int x,int y)
{
    nod *q;
    int ok=0;
    q=L[x];
    while(q!=NULL&&ok==0)
    {
        if(q->info==y)
            ok=1;
        q=q->urm;
    }
    if(ok==0)
    {
        q=new nod;
        q->info=y;
        q->urm=L[x];
        L[x]=q;
    }

}
void DFS(int k)
{
    nod *q;
    viz[k]=1;
    q=L[k];
    while(q!=NULL)
    {
        if(viz[q->info]==0)
        {
            ///cout<<q->info<<" ";
            DFS(q->info);
            st[++niv]=q->info;
        }
        q=q->urm;
    }
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fin>>a>>b;
        add(a,b);
    }
    for(int i=1;i<=n;i++)
    {
        if(viz[i]==0)
        {
            ///cout<<i<<endl;
            DFS(i);
            st[++niv]=i;
        }
    }
    for(int i=niv;i>0;i--)
        fout<<st[i]<<" ";
    return 0;
}