Pagini recente » Cod sursa (job #1266105) | Cod sursa (job #1638132) | Cod sursa (job #69901) | Cod sursa (job #920188) | Cod sursa (job #2670500)
#include <fstream>
#define N 50001
using namespace std;
struct nod
{
int info;
nod *urm;
};
nod *g[N];
int n,m,sol[N],viz[N],nr;
void Citire()
{
ifstream fin("sortaret.in");
int m,i,x,y;
nod *p;
fin>>n>>m;
while (m--)
{
fin>>x>>y;
p=new nod;
p->info=y;
p->urm=g[x];
g[x]=p;
}
fin.close();
}
void DFS(int vf)
{
int i;
nod *p;
viz[vf]=1;
for (p=g[vf];p!=NULL;p=p->urm)
{
i=p->info;
if (!viz[i])
DFS(i);
}
sol[++nr]=vf;
}
void SortareTopologica()
{
int i;
for (i=1;i<=n;i++)
if (!viz[i])
DFS(i);
}
void Afisare()
{
ofstream fout("sortaret.out");
int i;
for (i=nr;i>0;i--)
fout<<sol[i]<<" ";
fout.close();
}
int main()
{
int i;
ofstream fout("sortaret.out");
Citire();
SortareTopologica();
Afisare();
}