Pagini recente » Cod sursa (job #641515) | Cod sursa (job #3296970) | Cod sursa (job #941747) | Profil Marius314 | Cod sursa (job #2065133)
#include <fstream>
#include <vector>
#include <stack>
#include <cstring>
using namespace std;
vector<vector<int>> adj;
stack<int> st;
const int nmax = 50005;
bool viz[nmax];
void dfs(int root)
{
viz[root] = true;
for(int i = 0;i < (int) adj[root].size();++i)
{
int node = adj[root][i];
if(!viz[node])
{
dfs(node);
}
}
st.push(root);
}
int main()
{
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n, m;
in >> n >> m;
adj.resize(n + 1);
for(int i = 0;i < m;++i)
{
int x, y;
in >> x >> y;
adj[x].push_back(y);
}
memset(viz, false, sizeof(viz));
for(int i = 1;i <= n;++i)
{
if(!viz[i])
{
dfs(i);
}
}
while(!st.empty())
{
out << st.top() <<" ";
st.pop();
}
in.close();
out.close();
}