Pagini recente » Rating lefkocd (lefkocd) | Cod sursa (job #2237418) | Cod sursa (job #1722587) | Cod sursa (job #3274449) | Cod sursa (job #504467)
Cod sursa(job #504467)
#include<stdio.h>
#include<stdlib.h>
#define NR 50001
typedef struct Nod
{long info;
struct Nod *next;}nod;
typedef nod *list;
list l[NR];
long n,i,j,k,m,c[NR]={0},t=0,v[NR],f[NR],e[NR];
int cmp(const void *a,const void *b)
{return (int*)a-(int*)b;}
void add(list &l,long x)
{nod *p,*nou=new nod;
nou->info=x;
nou->next=NULL;
if(l==NULL)
{l=nou;
return;}
p=l;
while(p->next!=NULL)
p=p->next;
p->next=nou;}
int apartine(list l,long x)
{list c;
for(c=l;c!=NULL;c=c->next)
if(c->info==x)
return 1;
return 0;}
void explorare(long *t,long i)
{long j;
c[i]=1;
for(j=1;j<=n;j++)
if(c[j]==0&&apartine(l[i],j)==1)
explorare(t,j);
f[i]=++(*t);}
int main()
{freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(k=1;k<=m;k++)
{scanf("%ld %ld",&i,&j);
add(l[i],j);}
for(i=1;i<=n;i++)
if(c[i]==0)
explorare(&t,i);
for(i=1;i<=n;i++)
e[i]=f[i];
qsort(f,n,sizeof(f),cmp);
for(i=n;i>=1;i--)
{for(j=1;j<=n;j++)
if(f[i]==e[j])
printf("%ld ",j);}
fclose(stdin);
fclose(stdout);
return 0;}