Cod sursa(job #2647736)

Utilizator felix24mihaiPrava Felix Mihai felix24mihai Data 6 septembrie 2020 00:56:25
Problema Sortare topologica Scor 0
Compilator cpp-32 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>

#define MAX_N 50001

using namespace std;
int n, m, i, x, y, viz[MAX_N];
ifstream f("sortaret.in");
ofstream g("sortaret.out");

void addEdge(vector<int> graf[], int u, int v)
{
    graf[u].push_back(v);
    //graf[v].push_back(u);
}
vector<int> graf[MAX_N];

int G[MAX_N], coada[MAX_N];
int k = 0, it = 1;

void citire(){
    f >> n >> m;
    for (i=1; i<=m; i++){
        f >> x >> y;
        addEdge(graf,x,y);
    }
}

void topological(int nod){
    viz[nod] = 1;
    for (int i=0; i<G[nod]; i++)
        if (viz[graf[nod][i]] == 0)
            topological(graf[nod][i]);
    k++;
    coada[k] = nod;
}

void afisare(){
    for (int i=k; i>=1; i--)
        g << coada[i] << " ";
}

int main()
{
    citire();

    for (i = 1; i <= n; i++)
		    G[i] = graf[i].size();

    topological(1);
    afisare();
    return 0;
}