Cod sursa(job #1180417)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 30 aprilie 2014 17:02:00
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#include<vector>
using namespace std;

int N,M;
bool viz[50010];
int Sortat[50010],k;
vector <int> Muchie[50010];


void citire() {

    ifstream in("sortaret.in");
    in>>N>>M;
    int x,y;
    while(M--) {
        in>>x>>y;
        Muchie[x].push_back(y);
    }
    in.close();

}

void Dfs(int nod) {

    int i,vecin;
    viz[nod]=1;
    for(i=0;i<Muchie[nod].size();i++) {
        vecin=Muchie[nod][i];
        if(!viz[vecin])
            Dfs(vecin);
    }
    Sortat[++k]=nod;
}

void afisare() {

    ofstream out("sortaret.out");
    for(int i=k;i>=1;i--)
        out<<Sortat[i]<<' ';
    out<<'\n';
    out.close();

}


int main() {

    citire();
    for(int i=1;i<=N;i++)
        if(!viz[i])
            Dfs(i);
    afisare();
    return 0;
}