Cod sursa(job #2057911)

Utilizator eduardandrei20Nechifor Eduard Andrei eduardandrei20 Data 4 noiembrie 2017 21:14:18
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#define NN 50002
#include <fstream>
#include <vector>
using namespace std;

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


vector<int>topo;
vector<int>::iterator it;

struct nod{
int info;
 nod *next;
}*L[NN];

 void adaug(int x,  int y)
 {
     nod *aux = new nod;
     aux -> info = y;
     aux -> next = L[x];
     L[x]=aux;
 }

int n , m ;

void input()
{
     in >> n >> m;

     for ( int i = 0 ; i < m ; ++i )
     {
          int x ,y;
          in >> x >>y ;
          adaug(x,y);
     }
}
 bool viz[NN];

void dfs(int NOD)
{
    viz[NOD]=true;


    for(nod *aux= L[NOD]; aux ; aux = aux-> next)
    {

        if(!viz[aux->info])dfs(aux->info);


    }
    topo.push_back(NOD);

}




int main()
{
input();
for(int i = 1 ; i <=n ; ++i)
{
    if (!viz[i])dfs(i);
}


for(it = topo.end()-1; it !=topo.begin()-1; --it)
    out<< *it << " ";


    return 0;
}