Pagini recente » Cod sursa (job #3040680) | Cod sursa (job #1342255) | Cod sursa (job #899313) | Cod sursa (job #2969325) | Cod sursa (job #2877839)
#include <fstream>
#include <vector>
#include <stack>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
int n, m;
vector<vector<int>> G;
vector<bool> VC;
stack<int> S;
void dfs(int k) {
VC[k] = 1;
for (auto x : G[k])
if (VC[x] == 0)
dfs(x);
S.push(k);
}
int main() {
cin >> n >> m;
G = vector<vector<int>> (n + 1);
VC = vector<bool> (n + 1, 0);
for (int i = 1, a, b; i <= m; ++i)
cin >> a >> b, G[a].push_back(b);
for (int i = 1; i <= n; ++i)
if (VC[i] == 0)
dfs(i);
while (!S.empty())
cout << S.top() << " ", S.pop();
cin.close();
cout.close();
return 0;
}