Pagini recente » Cod sursa (job #1119255) | Cod sursa (job #874311) | Cod sursa (job #2118869) | Cod sursa (job #1430770) | Cod sursa (job #1882549)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
struct nod{int nr; nod *urm;}*a[100001];
nod *p;
int n,m,x[50001],j,viz[50001];
void citire()
{
f>>n>>m;
int x1,x2;
for(int i=1;i<=m;i++)
{
f>>x1>>x2;
p=new nod;
p->nr=x2;
p->urm=a[x1];
a[x1]=p;
}
}
void df(int k)
{
for(int i=1;i<=n;i++)
if(i!=k)
{
int ok=0,nr=0;
p=new nod;
p=a[k];
while(p)
{
nr++;
if(p->nr==i)
ok=1;
p=p->urm;
}
if(ok&&!viz[i])
{
p=a[k];
while(nr>1)
nr--,p=p->urm;
if(p->urm)
{
if(p->urm->urm)
p->urm=p->urm->urm;
}
else
p->urm=NULL;
df(i);
}
}
x[++j]=k;viz[k]=1;
}
int main()
{
citire();
for(int i=1;i<=n;i++)
if(viz[i]==0)
df(i);
for(int i=j;i>=1;i--)
g<<x[i]<<" ";
return 0;
}