Cod sursa(job #999566)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 20 septembrie 2013 19:57:52
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

ifstream fin("sortaret.in");
ofstream fout("sortaret.out");

struct nod {
    int lvl;
    vector<int> vecini;
};

nod nodes[50002];
int m, n, a, b, i;
queue<int>coada;

void free(int x) {
    int l, j;
    fout << x << ' ';
    l = nodes[x].vecini.size();
    for(j = 0; j < l; j++) {
        int vecin = nodes[x].vecini[j];
        nodes[vecin].lvl--;
        if(nodes[vecin].lvl == 0) {
            coada.push(vecin);
        }
    }
}

int main() {
    fin >> n >> m;
    for(i = 0; i < n; i++) {
        fin >> a >> b;
        nodes[a].vecini.push_back(b);
        nodes[b].lvl++;
    }
    for(i = 1; i <= n; i++) {
        if(nodes[i].lvl == 0) {
            coada.push(i);
        }
    }
    while(!coada.empty()) {
        free(coada.front());
        coada.pop();
    }
    fin.close();
    fout.close();
    return 0;
}