Cod sursa(job #2797535)

Utilizator asdfsfafafafafafafafaJarca Andrei asdfsfafafafafafafafa Data 10 noiembrie 2021 05:02:54
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.7 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <bits/stdc++.h>

using namespace std;
//ifstream fin("bfs.in");
//ofstream fout("bfs.out");
//ifstream fin("dfs.in");
//ofstream fout("dfs.out");
//ifstream fin("biconex.in");
//ofstream fout("biconex.out");
//ifstream fin("ctc.in");
//ofstream fout("ctc.out");
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int viz[100001];
int first_value[100001];
int min_pos[100001];
stack <int> node_order;
int counter=0;
vector<int>biconex[100001];
vector<int>ctc[100001];
vector<int>sol_ctc[100001];
vector<int>sol_sortaret;
class grafMare
{
    int N,M;
    vector <int> graf[100001];
    public:
        grafMare(){};
        int get_N();
        void citireBFS();
        void citireDFS();
        void actualDFS(int);
        void citire_biconex();
        void add_a_biconex(int,int);
        void DFS_biconex(int,int,int);
        void citireCTC();
        void DFS_CTC_1(int);
        void DFS_CTC_2(int);
        void citire_top();
        void DFS_top(int);
};
void grafMare::DFS_top(int current_node)
{
    viz[current_node]=1;
    for(auto x : graf[current_node])
        if(!viz[x])
            DFS_top(x);
    sol_sortaret.push_back(current_node);
}
void grafMare::citire_top()
{
    fin>>N>>M;
    for(int i=0;i<M;i++)
    {
        int a,b;
        fin>>a>>b;
        graf[a].push_back(b);
    }
    for(int i=1;i<=N;i++)
        if(!viz[i])
        {
            DFS_top(i);
        }
    reverse(sol_sortaret.begin(),sol_sortaret.end());
    for(auto x : sol_sortaret)
        fout<<x<<" ";
}
int main()
{
    grafMare gm;
    gm.citire_top();
}