Pagini recente » Cod sursa (job #3142171) | Cod sursa (job #2711785) | Cod sursa (job #3228481) | Cod sursa (job #3273632) | Cod sursa (job #470381)
Cod sursa(job #470381)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
struct nod{
int info;
nod *next;
} *vecini[50005],*ordine;
int n,m,s[50005];
void add(nod *&prim,int val)
{
nod *p=new nod;
p->info=val;
p->next=prim;
prim=p;
}
void push(int nodul)
{
nod *p=new nod;
p->info=nodul;
p->next=ordine;
ordine=p;
}
void citire()
{
int i,x,y;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
add(vecini[x],y);
}
f.close();
}
void dfs(int nodul)
{
nod *p;
s[nodul]=1;
for(p=vecini[nodul];p;p=p->next)
if(s[p->info]==0)
dfs(p->info);
push(nodul);
}
void sortare_topologica()
{
int i;
for(i=1;i<=n;i++)
if(s[i]==0)
dfs(i);
}
void afisare()
{
nod *p;
for(p=ordine;p;p=p->next)
g<<p->info<<" ";
g<<"\n";
g.close();
}
int main()
{
citire();
sortare_topologica();
afisare();
return 0;
}