Pagini recente » Cod sursa (job #1457581) | Cod sursa (job #1790455) | Cod sursa (job #229015) | Cod sursa (job #452821) | Cod sursa (job #2677619)
#include <iostream>
#include <fstream>
#define alb 0
#define gri 1
#define negru 2
#define NMAX 50005
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
typedef struct nod
{
int info;
nod *next;
}*PNOD,NOD;
PNOD L[NMAX]; ///vectorul de vecini pt fiecare nod
PNOD adresa; ///lista simplu inlantuita
int color[NMAX];
int N, M;
void ADD(int, int);
void citire();
void afisare();
void Push(int);
void Sortare_T();
void DF(int);
int main()
{
citire();
Sortare_T();
afisare();
return 0;
}
void ADD(int i, int j)
{
PNOD p=new NOD;
p->info=j;
p->next=L[i];
L[i]=p;
}
void citire()
{
f>>N>>M;
while(M)
{
int x, y;
f>>x>>y;
ADD(x,y);
--M;
}
}
void afisare()
{
for(PNOD p=adresa; p; p=p->next)
g<<p->info<<" ";
}
void Push(int nod)
{
PNOD p = new NOD;
p->info=nod;
p->next=adresa;
adresa=p;
}
void DF(int nod)
{
color[nod]=gri;
for(PNOD p=L[nod]; p ; p=p->next)
if(color[p->info]==alb)
DF(p->info);
color[nod]=negru;
Push(nod);
}
void Sortare_T()
{
int i;
for(i=1; i<=N; ++i)
if(color[i]==alb)
DF(i);
}