Pagini recente » Cod sursa (job #2917413) | Cod sursa (job #1982062) | Cod sursa (job #147454) | Cod sursa (job #2822868) | Cod sursa (job #504222)
Cod sursa(job #504222)
#include<stdio.h>
#define NR 500000
long n,i,j,k,m,p[NR],c[NR],t=0,v[NR],d[NR],f[NR],x,y,a1[NR],a2[NR];
int find(long a1[NR],long a2[NR],long m,long i,long j)
{long k;
for(k=1;k<=m;k++)
if(a1[k]==i&&a2[k]==j)
return 1;
return 0;}
void explorare(long *t,long i)
{long j;
d[i]=++(*t);
c[i]=1;
for(j=1;j<=n;j++)
if(c[j]==0&&find(a1,a2,m,i,j)==1)
{p[j]=i;
explorare(t,j);}}
c[i]=2;
f[i]=++(*t);}
int main()
{freopen("sortaret.in","rt",stdin);
freopen("sortaret.out","wt",stdout);
scanf("%ld %ld",&n,&m);
for(k=1;k<=m;k++)
scanf("%ld %ld",&a1[k],&a2[k]);
for(i=1;i<=n;i++)
{v[i]=i;
c[i]=0;
p[i]=0;
d[i]=0;
f[i]=0;}
for(i=1;i<=n;i++)
if(c[i]==0)
explorare(&t,i);
for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
if(f[i]<f[j])
{x=f[i];
f[i]=f[j];
f[j]=x;
y=v[i];
v[i]=v[j];
v[j]=y;}}
for(i=1;i<=n;i++)
printf("%ld ",v[i]);
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;}