Pagini recente » Cod sursa (job #604960) | Cod sursa (job #2610099) | Cod sursa (job #1992017) | Cod sursa (job #2886128) | Cod sursa (job #1981352)
#include<fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
struct nod
{
int vf;
nod *urm;
};
nod *prim[50002];
int n;
int gr[50002];
int c[50002], primul, ultimul;
void adauga(int x, int y)
{
nod *p;
p=new nod;
p->vf=x;
p->urm=prim[y];
prim[y]=p;
}
void stergere_grade(int x)
{
int i;
nod *p;
p=prim[x];
while(p)
{
gr[p->vf]--;
if(gr[p->vf]==0)
{
c[ultimul]=p->vf;
ultimul++;
fout<<p->vf<<" ";
}
p=p->urm;
}
}
int main()
{
int m, i, x, y;
fin>>n>>m;
for(i=1; i<=m; i++)
{
fin>>x>>y;
adauga(y, x);
gr[y]++;
}
primul=ultimul=1;
for(i=1; i<=n; i++)
{
if(gr[i]==0)
{
fout<<i<<" ";
c[ultimul]=i;
ultimul++;
}
}
while(primul<=ultimul)
{
stergere_grade(c[primul]);
primul++;
}
return 0;
}