Pagini recente » Cod sursa (job #703660) | Cod sursa (job #1555273) | Cod sursa (job #1897451) | Cod sursa (job #278871) | Cod sursa (job #1117091)
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("sortaret.in");
ofstream out ("sortaret.out");
const int N = 100005;
int n, m;
int grad[N];
vector <int> a[N];
int coada[N];
void read()
{
in >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y;
in >> x >> y;
a[x].push_back(y);
grad[y]++;
}
}
void solve()
{
for (int i = 1; i <= n; i++) {
if (grad[i] == 0) {
coada[++coada[0]] = i;
}
}
for (int i = 1; i <= n; i++) {
int x = coada[i];
for (int j = 0; j < a[x].size(); j++) {
int y = a[x][j];
grad[y]--;
if (grad[y] == 0) {
coada[++coada[0]] = y;
}
}
}
}
void write()
{
for (int i = 1; i <= n; i++) {
out << coada[i] << " ";
}
out << "\n";
}
int main()
{
read();
solve();
write();
return 0;
}