Pagini recente » Cod sursa (job #28164) | Cod sursa (job #693851) | Cod sursa (job #136165) | Cod sursa (job #1227112) | Cod sursa (job #2797577)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("sortaret.in");
ofstream cout("sortaret.out");
int v[50005];
vector<int> graf[50005];
bool isFirst[50005];
void go(int i, int k = 0) {
v[i] = max(v[i], k + 1);
for (int nod : graf[i]) {
go(nod, k + 1);
}
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y;
cin >> x >> y;
isFirst[y] = 1;
graf[x].push_back(y);
}
vector<int> first;
for (int i = 1; i <= n; i++) {
if (isFirst[i]) {
first.push_back(i);
v[i] = 1;
}
}
for (int f : first) {
go(f);
}
vector<pair<int, int>> nr;
for (int i = 1; i <= n; i++) {
nr.push_back({ v[i], i });
}
sort(nr.begin(), nr.end());
for (auto i : nr) {
cout << i.second << ' ';
}
return 0;
}