Pagini recente » Cod sursa (job #2232146) | Cod sursa (job #1510056) | Istoria paginii utilizator/burlacudarius | Cod sursa (job #2398745) | Cod sursa (job #1260748)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 50000 + 1;
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
int n, m;
int grad[NMAX];
vector <int> sol;
vector <int> graf[NMAX];
void citeste() {
int a, b;
f >> n >> m;
for (int i = 1; i <= m; i++) {
f >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
grad[b]++;
}
}
void sorteaza() {
int nod, fiu, l;
for (int i = 1; i <= n; i++)
if (grad[i] == 0) sol.push_back(i);
for (int i = 0; i < n; i++) {
int nod = sol[i];
l = graf[nod].size();
for (int i = 0; i < l; i++) {
fiu = graf[nod][i];
grad[fiu]--;
if (grad[fiu] == 0) sol.push_back(fiu);
}
}
for (int i = 0; i < n; i++) g << sol[i] << ' ';
}
int main() {
citeste();
sorteaza();
return 0;
}