Pagini recente » Cod sursa (job #2870445) | Cod sursa (job #172398) | Cod sursa (job #1654549) | Cod sursa (job #366843) | Cod sursa (job #2211240)
#include <fstream>
#define N 50001
#define M 100001
int start[N], value[M], next[M], count, nrd[N];
inline int add(int from, int to) {
++count;
value[count] = to;
next[count] = start[from];
start[from] = count;
}
int q[N], st, dr = -1;
void bfs(int x) {
int y;
for (int p = start[x]; p != 0; p = next[p]) {
y = value[p];
--nrd[y];
if (nrd[y] == 0) q[++dr] = y;
}
}
int main() {
std::ifstream in("sortaret.in");
std::ofstream out("sortaret.out");
int i, n, m, x, y;
in >> n >> m;
for (i = 0; i < m; ++i) {
in >> x >> y;
add(x, y);
++nrd[y];
}
for (i = 1; i <= n; ++i) if (nrd[i] == 0) q[++dr] = i;
while (st <= dr) {
out << q[st] << ' ';
bfs(q[st]);
++st;
}
return 0;
}