Pagini recente » Cod sursa (job #2678541) | Cod sursa (job #1717021) | Cod sursa (job #2607225) | Cod sursa (job #1218520) | Cod sursa (job #904140)
Cod sursa(job #904140)
#include <iostream>
#include <fstream>
using namespace std;
#define ALB 0
#define GRI 1
#define NEGRU 2
#define NMAX 50005
typedef struct nod
{
int vf;
nod *next;
} *PNOD, NOD;
PNOD L[NMAX], sol;
int N,M, x, y, color[NMAX];
ifstream in("sortaret.in");
ofstream out("sortaret.out");
void adauga (int a, int b)
{
PNOD p = new NOD;
p->vf = b;
p->next = L[a];
L[a] = p;
}
void citire ()
{
in>>N>>M;
for(int i = 1; i <= M; i++)
{
in>>x>>y;
adauga(x, y);
}
}
void push (int i)
{
PNOD p = new NOD;
p->vf = i;
p->next = sol;
sol = p;
}
void DF (int i)
{
color[i] = GRI;
for( PNOD p = L[i]; p; p = p->next)
if(color[p->vf] == ALB)
DF (p->vf);
color[i] = NEGRU;
push (i);
}
void sortareT ()
{
for(int i = 1; i <= N; i++)
{
if(color[i] == ALB)
DF (i);
}
}
void afisare ()
{
for(PNOD p = sol; p; p = p->next)
out<<p->vf<<" ";
}
int main()
{
citire();
sortareT();
afisare();
return 0;
}