Cod sursa(job #2278820)

Utilizator driver71528@gmail.comTerec Andrei-Sorin [email protected] Data 8 noiembrie 2018 16:38:28
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stack>
#include <iostream>
#include <fstream>
#include<vector>
#define ALB 0
#define GRI -1
#define NEGRU 1
#define MAXn 50000
using namespace std;
stack<int>s;
int n,m;
vector <int> v[MAXn+1];
int color[MAXn+1];

void citire()
{
    ifstream f("sortaret.in");
    f>>n>>m;
    int a,b;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b;
        v[a].push_back(b);
    }
    f.close();
}

void DFS(int i)
{
    color[i]=GRI;
    vector<int>::iterator it;
    for(it=v[i].begin();it!=v[i].end();it++)
    {
        if(color[*it]==ALB)
            DFS(*it);
    }
    color[i]=NEGRU;
    s.push(i);
}

void afis()
{
    ofstream g("sortaret.out");
    while(!s.empty())
    {
        g<<s.top()<<' ';
        s.pop();
    }
    g.close();
}

int main()
{
    citire();
    for(int i=1;i<=n;i++)
        if(color[i]==ALB)
            DFS(i);
    afis();
    return 0;
}