Pagini recente » Cod sursa (job #3217244) | Cod sursa (job #1358029) | Cod sursa (job #2501929) | Cod sursa (job #1899961) | Cod sursa (job #2973906)
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
#define fileIn "sortaret.in"
#define fileOut "sortaret.out"
#define nul nullptr
#define MAX_N 100000
#define MAX_M 400000
int n, m, in[MAX_N + 1], fin[MAX_N + 1], k;
bool viz[MAX_N + 1];
vector<int> V[MAX_N+1];
void citire() {
ifstream fin(fileIn);
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int v1, v2;
fin >> v1 >> v2;
V[v1].push_back(v2);
in[v2]++;
}
fin.close();
}
void parcurgere() {
int x = n;
while (x && k < n) {
if (in[x] == 0 && !viz[x]) {
for (auto i : V[x]) {
in[i]--;
}
viz[x] = 1;
fin[++k] = x;
x = n;
}
else x--;
}
}
void afisare() {
ofstream fout(fileOut);
for (int i = 1; i <= n; i++) fout << fin[i] << ' ';
fout.close();
}
int main() {
citire();
parcurgere();
afisare();
return 0;
}