Pagini recente » Cod sursa (job #2597298) | Cod sursa (job #3260607) | Cod sursa (job #1476150) | Cod sursa (job #1490075) | Cod sursa (job #2207512)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
vector< vector< int > > G;
vector< bool > viz;
vector< int > grad;
stack< int > s;
void DFS(int nod) {
viz[nod] = true;
// cout << nod << " ";
for(auto vecin: G[nod]) {
if(!viz[vecin]) {
DFS(vecin);
}
}
s.push(nod);
// cout << nod << " ";
}
int main() {
ios::sync_with_stdio(false); in.tie(0); out.tie(0);
int n, m; in >> n >> m;
G.resize(n + 1); viz.resize(n + 1, false); grad.resize(n + 1, 0);
for(int i = 1; i <= m; ++i) {
int x, y; in >> x >> y;
G[x].push_back(y);
grad[y]++;
}
// for(int i = 1; i <= n; ++i) {
// cout << grad[i] << " ";
// }
// cout << endl;
// for(int i = 1; i <= n; ++i) {
// cout << i << " -> ";
// for(auto vecin: G[i]) {
// cout << vecin << " ";
// }
// cout << "\n";
// }
for(int i = 1; i <= n; ++i) {
if(grad[i] == 0) {
DFS(i);
}
}
vector< int > ans;
while(!s.empty()) {
ans.push_back(s.top());
s.pop();
}
for(int i = 0; i < n; ++i) {
out << ans[i] << " ";
}
in.close(); out.close();
return 0;
}