Pagini recente » Cod sursa (job #1557798) | Cod sursa (job #2912677) | Cod sursa (job #2041645) | Cod sursa (job #385952) | Cod sursa (job #2424949)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
#define NMAX 500005
vector<int> graf[NMAX];
list<int> sortat;
int viz[NMAX], n, m;
void citire(){
f>>n>>m;
for(int i = 0; i < m ;i ++)
{
int a, b;
f>>a>>b;
graf[a].push_back(b);
}
}
void dfs(int node){
viz[node] = 1;
for(int i = 0; i < graf[node].size(); i ++)
{
if(!viz[graf[node][i]])
dfs(graf[node][i]);
}
sortat.push_front(node);
}
void SortareTopologica(){
for(int i = 1; i <= n; i ++)
if(!viz[i])
dfs(i);
}
void afisare(){
for(int node :sortat)
g<<node<<" ";
}
int main()
{
citire();
SortareTopologica();
afisare();
return 0;
}