Pagini recente » Borderou de evaluare (job #2488986) | Borderou de evaluare (job #71684) | Borderou de evaluare (job #1471805) | Borderou de evaluare (job #1208583) | Cod sursa (job #2501691)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define pb push_back
using namespace std;
const int MAXN = 50010;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int> edges[MAXN];
queue<int> q;
bool used[MAXN];
int n, m, gr[MAXN];
void read() {
fin >> n >> m;
for (int i = 0; i < m; ++i) {
int x, y;
fin >> x >> y;
edges[x].pb(y);
++gr[y];
}
}
void initialize() {
for (int i = 1; i <= n; ++i)
if (!gr[i])
q.push(i);
}
void solve() {
while(!q.empty()) {
int node = q.front();
q.pop();
fout << node << ' ';
for (const auto& it: edges[node]) {
--gr[it];
if (!gr[it])
q.push(it);
}
}
}
int main() {
read();
initialize();
solve();
return 0;
}