Cod sursa(job #2062634)

Utilizator danielsociuSociu Daniel danielsociu Data 10 noiembrie 2017 17:41:37
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
#define nMAX 50005

int ex[nMAX]={0},s[nMAX]={0},v[150][nMAX];

void rezolvare(int n,int ex[],int s[],int i);

int main(){
    int n,m;
    cin>>n>>m;
    int a,b;
    for(int i=1;i<=m;i++){
        cin>>a>>b; v[a][++ex[a]]=b;
    }
    rezolvare(n,ex,s,1);
    for(int i=1;i<=n;i++){
        if(s[i]!=1)
            s[i]=1;
    }
    return 0;
}

void rezolvare(int n,int ex[],int s[],int i){
    if(i<=n){
        if(s[i]!=1){
             s[i]=1; cout<<i<<" "; rezolvare(n,ex,s,i);
           }
        else if(ex[i]>0){
            for(int j=1;j<=ex[i];j++)
                rezolvare(n,ex,s,v[i][j]);
        }
    }
}