Pagini recente » Cod sursa (job #1603585) | Cod sursa (job #3220924) | Cod sursa (job #614271) | Cod sursa (job #539796) | Cod sursa (job #1040418)
#include<fstream>
#include<vector>
using namespace std;
vector<int> L[50002];
int n, viz[50002], lista[50002], k;
void Citire()
{
int i, x, y, m ;
ifstream fin("sortaret.in");
fin >> n >> m;
for (i = 1; i <= m; i++)
{
fin >> x >> y ;
L[x].push_back(y);
}
fin.close();
}
void DFS(int nod)
{
int j;
viz[nod] = 1;
for (unsigned int p = 0; p < L[nod].size(); p++)
{
j = L[nod][p];
if (viz[j] == 0)
DFS(j);
}
viz[nod] = 2;
lista[++k] = nod;
}
void SortareTopologica()
{
int i;
for (i = 1; i <= n; i++)
if (viz[i] == 0)
DFS(i);
}
void Afisare()
{
int i;
ofstream fout("sortaret.out");
for (i = k; i >= 1; i--)
fout << lista[i] << " ";
fout.close();
}
int main()
{
Citire();
SortareTopologica();
Afisare();
return 0;
}