Cod sursa(job #1725500)

Utilizator marius25cCretu Marius marius25c Data 5 iulie 2016 19:33:21
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <queue>

#define NMAX 50005

using namespace std;

ifstream g("sortaret.in");
ofstream gg("sortaret.out");

queue < int > coada;

int N,M;
int viz[ NMAX ];

struct Vector{
    int x,y;
}V[ NMAX ];

void Read(){
    int a,b,i=1;
    g>> N>> M;
    g>> a >>b; coada.push(a);
    while( i <= M ){
        V[ i ].x = a; V[ i ].y = b;
        g>> a>> b;
        i++;
    }
    //gg<<coada.front();
}

void DFS(int nod){
    if(nod <= N){
        for(int i=1; i<=N; i++){
            if(V[i].x == nod && viz[V[i].y] != 1) coada.push(V[i].y),viz[V[i].y] = 1,DFS(V[i].y);
        }
    }
}
void Write(){
    for(int i=1; i<=N; i++){
        gg<< coada.front() << " ";
        coada.pop();
    }
}
int main(void){
    Read();
    viz[coada.front()] = 1;
    DFS(coada.front());
    Write();
    return 0;
}