Pagini recente » Cod sursa (job #946183) | Cod sursa (job #1299352) | Cod sursa (job #1370997) | Cod sursa (job #958254) | Cod sursa (job #1131623)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sortaret.in");
int n,m;
struct Nod
{
int info;
Nod *leg;
};
Nod *L[50005];
Nod *adresa;
int viz[50005];
void Inserare(int x, int y)
{
Nod *p;
p=new Nod;
p->info = y;
p->leg = L[x];
L[x]=p;
}
void Citire()
{
int i,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x>>y;
Inserare(x,y);
}
}
void Add(int nod)
{
Nod *p;
p=new Nod;
p->info = nod;
p->leg = adresa;
adresa = p;
}
void DFS(int nod)
{
int i;
viz[nod] = 1;
for ( Nod *p = L[nod]; p; p = p->leg )
{
i = p->info;
if ( viz[i] == 0 )
DFS(i);
}
viz[nod] = 2;
Add(nod);
}
void Sortare_Topologica()
{
int i;
for(i=1;i<=n;i++)
{
if(viz[i] == 0)
DFS(i);
}
}
int main()
{
Citire();
Sortare_Topologica();
ofstream g("sortaret.out");
int i;
for(Nod *p = adresa; p ; p=p->leg)
g<<p->info<<" ";
g<<"\n";
return 0;
}