Pagini recente » Cod sursa (job #1647393) | Cod sursa (job #775806) | Cod sursa (job #2179655) | Cod sursa (job #1669663) | Cod sursa (job #1459669)
#include <iostream>
#include <fstream>
#define fin "sortaret.in"
#define fou "sortaret.out"
#define Nmax 50001
int n,m,vizitat[Nmax];
using namespace std;
typedef struct nodul{
int nod;
nodul *next;
} *vecini;
vecini noduri[Nmax];
vecini ordine;
void add(int a,int b)
{
vecini p=new nodul;
p->nod=b;
p->next=noduri[a];
noduri[a]=p;
}
void dfs(int x)
{
vizitat[x]=1;
while(noduri[x]!=NULL)
{
if(!vizitat[noduri[x]->nod]) dfs(noduri[x]->nod);
noduri[x]=noduri[x]->next;
}
vecini p=new nodul;
p->nod=x;
p->next=ordine;
ordine=p;
}
int main()
{
ifstream t1(fin);
ofstream t2(fou);
int i,j,a,b;
t1>>n>>m;
for(i=1;i<=m;i++)
{
t1>>a>>b;
add(a,b);
}
for(i=1;i<=n;i++)
if(!vizitat[i]) dfs(i);
while(ordine!=NULL)
{
t2<<ordine->nod<<' ';
ordine=ordine->next;
}
t1.close();
t2.close();
return 0;
}