Pagini recente » Cod sursa (job #3192791) | Cod sursa (job #1814519) | Cod sursa (job #1386430) | Cod sursa (job #1300699) | Cod sursa (job #2199124)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int N;
int M;
struct Nod
{
vector <int> Ad;
bool viz=0;
int gradin=0;
};
vector <int> topolist;
Nod A[50002];
void Read()
{
fin>>N>>M;
int x,y;
for(int i=1; i<=M; ++i)
{
fin>>x>>y;
A[x].Ad.push_back(y);
A[y].gradin++;
}
fin.close();
}
void SortareTopologica(int nod)
{
A[nod].viz=1;
for(int i=0; i<A[nod].Ad.size(); ++i)
if(A[A[nod].Ad[i]].viz==0)
SortareTopologica(A[nod].Ad[i]);
topolist.push_back(nod);
}
void Do()
{
for(int i=1; i<=N; ++i)
if(A[i].gradin==0 && A[i].viz==0)
SortareTopologica(i);
}
void Print()
{
int SZ=N-1;
for(int i=SZ; i>=0; --i)
fout<<topolist[i]<<' ';
fout.close();
}
int main()
{
Read();
Do();
Print();
return 0;
}