Pagini recente » Cod sursa (job #2011386) | Cod sursa (job #2097569) | Cod sursa (job #2216846) | Cod sursa (job #757468) | Cod sursa (job #1743516)
#include <cstdio>
#include <vector>
#include <queue>
#define in "sortaret.in"
#define out "sortaret.out"
#define NMAX 50000 + 7
#define pb push_back
using namespace std;
int n, m, inD[NMAX], a, b;
vector <int> adj[NMAX];
queue <int> order, sol;
inline void getInput()
{
scanf("%d ", &n, &m);
for(int i = 1; i<= m; ++i)
{
scanf("%d %d ", &a, &b);
adj[a].pb(b);
inD[b] ++;
}
}
inline void makeSort()
{
for(int i = 1; i<= n; ++i)
{
if(inD[i] == 0) order.push(i);
}
while(!order.empty())
{
int tmp = order.front();
sol.push(tmp);
int sze = adj[tmp].size();
for(int i = 0; i< sze; ++i)
{
inD[adj[tmp][i]] --;
if(inD[adj[tmp][i]] == 0) order.push(adj[tmp][i]);
}
order.pop();
}
}
inline void giveOutput()
{
while(!sol.empty())
{
int tmp = sol.front();
printf("%d ", tmp);
sol.pop();
}
printf("\n");
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
getInput();
makeSort();
giveOutput();
return 0;
}