Pagini recente » Cod sursa (job #242687) | Cod sursa (job #1499825) | Cod sursa (job #1044939) | Cod sursa (job #2681435) | Cod sursa (job #292883)
Cod sursa(job #292883)
#include <cstdio>
#include <algorithm>
#include <queue>
#define FIN "sortaret.in"
#define FOUT "sortaret.out"
#define N 500010
using namespace std;
int n, m;
char x[N];
pair <int, int> d[N];
vector <int> v[N];
queue <int> q;
void read()
{
int i, x, y;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= m; ++i)
{
scanf("%d%d", &x, &y);
++d[x].first;
++d[y].second;
v[x].push_back(y);
}
}
void solve()
{
int p, i;
for (i = 1; i <= n; ++i)
if (!d[i].second)
{
q.push(i);
x[i] = 1;
}
while (!q.empty())
{
p = q.front();
printf("%d ", p);
q.pop();
for (i = 0; i < d[p].first; ++i)
if (!x[v[p][i]])
{
-- d[v[p][i]].second;
if (d[v[p][i]].second == 0)
{
q.push(v[p][i]);
x[v[p][i]] = 1;
}
}
}
}
int main()
{
read();
solve();
printf("\n");
}