Cod sursa(job #1592546)

Utilizator AcuasPopescu Nicolae-Aurelian Acuas Data 7 februarie 2016 18:58:55
Problema Sortare topologica Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <cstdio>
#include <iostream>
using namespace std;
int N,M,dg[105],nr;
struct nod{
    int info;
    nod *next;
}*a[50000];
struct nod *v[100005];
int n,viz[100005],t;
//inserare sfarstit
nod* inserare(nod *p,int x){
    nod* elem=new nod;
    elem->info=x;
    elem->next=NULL;
    if(p==NULL){
        return elem;
    }
    else{
        nod *parcurg=p;
        while(parcurg->next!=NULL)
            parcurg=parcurg->next;
        parcurg->next=elem;
        return p;
    }
}
nod* inserare_inceput(nod *p,int x){
    nod *elem=new nod;
    elem->info=x;
    elem->next=p;
    return elem;
}
void citeste(){
    int i, x, y;
    cin>>N>>M;
    for(i = 1; i <= M; i++){
        cin>>x>>y;
        a[x]=inserare_inceput(a[x],y);
        dg[y]++;
    }
}
int main(){
    freopen("sortaret.in", "r", stdin);
    freopen("sortaret.out", "w", stdout);
    citeste();
    while(nr<N){
        for(int i=1;i<=N;i++)
        if(dg[i]==0){
            cout<<i<<' ';
            nr++;
            dg[i]--;
            nod* parcurg=a[i];
            while(parcurg){
                dg[parcurg->info]--;
                parcurg=parcurg->next;
            }
        }
    }

    return 0;
}