Pagini recente » Cod sursa (job #2243236) | Cod sursa (job #571116) | Cod sursa (job #2497523) | Borderou de evaluare (job #2451504) | Cod sursa (job #2228160)
#include <iostream>
#include <fstream>
#include <vector>
#define Nmax 50001
using namespace std;
ifstream f("sortare.in");
ofstream g("sortare.out");
int N, M, Q[Nmax], grad_ext[Nmax];
vector <int> adiacenta[Nmax];
int main()
{
int i, x, a, b, k = 0;
vector <int> :: iterator it;
f >> N >> M;
for(i = 1; i <= M; i++)
{
f >> a >> b;
adiacenta[a].push_back(b);
grad_ext[b]++;
}
for(i = 1; i <= N; i++)
if(grad_ext[i] == 0)
{
k++;
Q[k] = i;
}
for(i = 1; i <= N; i++)
{
x = Q[i];
for(it = adiacenta[x].begin(); it != adiacenta[x].end(); it++)
{
grad_ext[*it]--;
if(grad_ext[*it] == 0)
{
k++;
Q[k] = *it;
}
}
}
for(i = 1; i <= N; i++)
g << Q[i] << " ";
return 0;
}