Pagini recente » Cod sursa (job #2501569) | Cod sursa (job #1103629) | Cod sursa (job #95875) | Cod sursa (job #1971789) | Cod sursa (job #2797535)
#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();
}