Pagini recente » Cod sursa (job #109950) | Cod sursa (job #2126506) | Cod sursa (job #2808728) | Cod sursa (job #2617555) | Cod sursa (job #1835632)
#include <fstream>
#include <vector>
#define maxn 50002
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n, m, deg[maxn], v[maxn];
vector <int> g[maxn];
//deg[i] = cate arce intra in nodul i
void read()
{
int x, y;
fin >> n >> m;
for (int i = 0; i < m; i++) {
fin >> x >> y;
g[x].push_back(y);
deg[y]++;
}
}
void write()
{
for (int i = 1; i <= n; i++)
fout << v[i] << ' ';
}
void sortare_t()
{
int aux;
vector <int>::iterator it;
for (int i = 1; i <= n; i++)
if (deg[i] == 0)
v[++v[0]] = i;
for (int i = 1; i <= n; i++) {
aux = v[i];
for (it = g[aux].begin(); it != g[aux].end(); it++) {
deg[*it]--;
if (deg[*it] == 0)
v[++v[0]] = *it;
}
}
}
int main()
{
read();
sortare_t();
write();
return 0;
}