Pagini recente » Cod sursa (job #1420932) | Cod sursa (job #2948642) | Cod sursa (job #3236390) | Cod sursa (job #2963478) | Cod sursa (job #1543060)
#include <iostream>
#include <stack>
#include <fstream>
using namespace std;
stack <int> q;
int m,n,v[50001];
struct nod {
int val;
nod * urm;
} *l[50001];
void vecini(int x, int y)
{
nod *p=new nod;
p->val=y;
p->urm=l[x];
l[x]=p;
}
void citire()
{
ifstream f("sortaret.in");
f>>n>>m;
for(int i=0;i<m;i++)
{
int x,y;
f>>x>>y;
vecini(x,y);
}
}
void df(int i)
{
v[i] = 1;
for(nod *p=l[i]; p;p=p->urm)
if(v[p->val]==0)
df(p->val);
v[i]=2;
q.push(i);
}
void topo()
{
for(int i=1;i<=n;i++)
if(v[i]==0)
df(i);
}
void afisare()
{
ofstream g("sortaret.out");
while(!q.empty())
{
g<<q.top()<<" ";
q.pop();
}
g.close();
}
int main()
{
citire();
topo();
afisare();
return 0;
}