Pagini recente » Cod sursa (job #2998403) | Cod sursa (job #777404) | Cod sursa (job #2089610) | Cod sursa (job #3251016) | Cod sursa (job #2660378)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m;
list<int>* adj;
stack<int> s;
void dfs(int i, bool vizitat[], stack<int> st)
{
vizitat[i] = 1;
for(auto x : adj[i])
if(vizitat[x] == 0)
dfs(x, vizitat, st);
s.push(i);
}
void sortareTopologica()
{
bool* vizitat = new bool[n + 1];
for(int i = 1; i <= n; i++) //initializez toate nodurile ca nevizitate
vizitat[i] = 0;
for(int i = 1; i <= n; i++)
if(vizitat[i] == 0)
dfs(i, vizitat, s);
while(!s.empty())
{
g << s.top() << " ";
s.pop();
}
}
int main() {
f >> n >> m;
adj = new list<int>[n + 1];
for(int i = 0; i < m; i++)
{
int x, y;
f >> x >> y;
adj[x].push_back(y);
}
sortareTopologica();
return 0;
}