Cod sursa(job #2717713)

Utilizator mara_cimpeanMara Cimpean mara_cimpean Data 7 martie 2021 20:39:04
Problema Sortare topologica Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct nod{
  int info;
  nod *urm;
};

nod *v[10010];

int viz[10010],n,m,x,y,cnt,sol[10010];

void addnod(int x, int y)
{
    nod *q;
    q=new nod;
    q->urm=v[x];
    q->info=y;
    v[x]=q;
}

void dfs(int k)
{
    nod*q;
    viz[k]=1;
    q=v[k];
    while (q!=NULL)
    {
      if (viz[q->info]==0)
      {
          viz[q->info]=1;
          dfs(q->info);
      }
      q=q->urm;
    }
    sol[++cnt]=k;
}

int main()
{
    int i;
    fin>>n>>m;
    for (i=1;i<=m;i++)
    {
        fin>>x>>y;
        addnod(x,y);
    }
    for (i=1;i<=n;i++)
        if (viz[i]==0)
            dfs(i);
    for (i=cnt;i>=1;i--)
        fout<<sol[i]<<" ";
    return 0;
}