Cod sursa(job #430085)

Utilizator MKLOLDragos Ristache MKLOL Data 30 martie 2010 18:47:20
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#define Nmax 100100
int N,M;
struct Nod{
int val;
Nod *next;} *l[Nmax];
int x,y,nr,v[Nmax],k;
char viz[Nmax];
void adauga(int a,int p)
{
    Nod *q= new Nod;
    q->val=p;
    q->next=l[a];
    l[a]=q;
}
void make_df(int s)
{

viz[s]=1;
    Nod *q=l[s];
    while(q!=NULL)
    {
        if(viz[q->val]==0)
        {
            viz[q->val]=10;
            make_df(q->val);
        }
        q=q->next;
    }
    v[++k]=s;

}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
scanf("%d%d",&N,&M);
    for(int i=1;i<=M;++i)
        {
            scanf("%d%d",&x,&y);
            adauga(x,y);
            adauga(y,x);
        }
    for(int i=1;i<=N;++i)
        {
            if(viz[i]==0)
            {
                make_df(i);
            }
        }
        for(int i=k;i>=1;--i)
        printf("%d ",v[i]);
}