Pagini recente » Cod sursa (job #860590) | Cod sursa (job #1795498) | Cod sursa (job #936034) | Borderou de evaluare (job #1567017) | Cod sursa (job #1305309)
#include <iostream>
#include <fstream>
using namespace std;
#define NMAX 1000
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n,m,x,y,ver[NMAX];
typedef struct lista
{
int vf;
lista *next;
}*PNOD;
PNOD adresa,L[NMAX];
void citire();
void add(int i,int j);
void sortare();
void DF(int nod);
void PUSH(int nod);
void afisare();
int main()
{
citire();
sortare();
afisare();
}
void citire()
{
in>>n>>m;
for(;m>0;m--)
{
in>>x>>y;
add(x,y);
}
}
void add(int i,int j)
{
PNOD p=new lista;
p->vf=j;
p->next=L[i];
L[i]=p;
}
void sortare()
{
for(int i=1;i<=n;i++)
if(ver[i]==0)
DF(i);
}
void DF(int nod)
{
ver[nod]=1;
for(lista* p=L[nod];p;p=p->next)
if(ver[p->vf]==0)
DF(p->vf);
ver[nod]=1;
PUSH(nod);
}
void PUSH(int no)
{
PNOD p=new lista;
p->vf=no;
p->next=adresa;
adresa=p;
}
void afisare()
{
for(PNOD p=adresa;p;p=p->next)
out<<p->vf<<" ";
}