Pagini recente » Cod sursa (job #976950) | Cod sursa (job #2509058) | Cod sursa (job #60754) | Cod sursa (job #2380206) | Cod sursa (job #2150820)
#include <fstream>
#include <vector>
#define NMAX 50100
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n, m, Q[NMAX], Gin[NMAX], u, p;
vector <int> G[NMAX];
void citire()
{
int i, j;
f>>n>>m;
for(int q = 1;q <= m; q++)
{
f>>i>>j;
G[i].push_back(j);
Gin[j]++;
}
}
void coadare()
{
p = 1;
u = 0;
for(int i = 1;i <= n;i++)
if(!Gin[i])
Q[++u] = i;
}
void solve()
{
int i, x;
vector<int>:: iterator it;
while(p<=u)
{
x = Q[p++];
for(it = G[x].begin();it != G[x].end();it++)
{
Gin[*it]--;
if(!Gin[*it])
Q[++u] = *it;
}
}
}
void afisare()
{
for(int i=1;i<=n;i++)
g<<Q[i]<<" ";
}
int main()
{
citire();
coadare();
solve();
afisare();
}