Pagini recente » Cod sursa (job #2505052) | Cod sursa (job #2421780) | Cod sursa (job #1986975) | Cod sursa (job #1842102) | Cod sursa (job #2666314)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int viz[100001], i, ultim, N, M, x, y, S[100001], copil, j;
vector <int> muchii[100001];
void DFS( int nod )
{
viz[nod] = 1;
for ( j = 0; j < muchii[nod].size() ; j++) //parcurg copiii nodului incepand cu ultimul si il pun imediat in lista finala sortata
{
copil = muchii[nod][j];
if(viz[copil] == 0)
{
DFS(copil); //dupa care plec imediat spre copiii acestuia si fac la fel si pentru ei
}
}
S[++ultim] = nod;
}
void citire()
{
f >> N >> M;
for ( i = 1; i <= M; i++ )
{
f >> x >> y; //citesc nodurile x, y si pun in muchii[x] nodurile catre care se duc arce din x
muchii[x].push_back(y);
}
}
int main()
{
citire();
for ( i = 1; i <= N; i++)
if ( viz[i] == 0 )
{ //S[++ultim] = i;
DFS(i); } //pun in lista nodul din care am plecat
for ( i = ultim; i >= 1; i-- )
g << S[i] << " "; //afisez lista finala sortata
return 0;
}