Cod sursa(job #2571949)

Utilizator mionelIon. M mionel Data 5 martie 2020 10:56:48
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector < int> L[50001];
int n, m, Viz[50001];
int fin[50001];
int p[50001];
int timp;
stack <int> s;
bool Compare(int a,  int b)
{ if(a>b )
    return 1;
  else return 0;
}
void Citire()
{int i, x, y;
f>>n>>m;
for(i=1;i<=m;i++)
    { f>>x>>y;
     L[x].push_back(y);

    }
for(i=1;i<=n;i++)
 p[i]=i;
}
void DFS(int nod)
{ int j,vec;
  Viz[nod]=1; timp++;
   for(j=0;j<L[nod].size();j++)
    {vec=L[nod][j];
       if(Viz[vec]==0)
         DFS(vec);
    }
 fin[nod] =++timp;
 //cout <<nod<<" ";
 s.push(nod);
}
void Afisare()
{ int i;

  while(!s.empty())
  {
      g <<s.top()<<" ";
      s.pop();
  }
}
int main()
{ int i;
Citire();
for(i=1;i<=n;i++)
 if(Viz[i]==0)
  DFS(i);

Afisare();
f.close();
g.close();
    return 0;
}