Pagini recente » Cod sursa (job #1530253) | Cod sursa (job #1083424) | Cod sursa (job #929332) | Cod sursa (job #1198929) | Cod sursa (job #1343719)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
fstream f("sortaret.in",ios::in);
fstream g("sortaret.out",ios::out);
const int nmax = 50005;
vector <int> a[nmax];
int n, m, i, x, y, nrint[nmax], a1[nmax], nr, nc;
void citire()
{
f>>n>>m;
for (i = 1;i <= m;i++)
{
f>>x>>y;
a[x].push_back(y);
nrint[y]++;
}
}
void rezolvare()
{
queue <int> q;
for (i = 1; i <= n; i++) if (!nrint[i]) q.push(i);
while (!q.empty())
{
nc = q.front();
nr++;
a1[nr] = nc;
q.pop();
for (vector <int>::iterator it = a[nc].begin();it != a[nc].end(); ++it)
{
nrint[*it]--;
if (!nrint[*it]) q.push(*it);
}
}
for (i = 1; i <= n; i++) g<<a1[i]<<" ";
}
int main()
{
citire();
rezolvare();
return 0;
}