Pagini recente » Cod sursa (job #3186406) | Cod sursa (job #1076928) | Cod sursa (job #2920347) | Cod sursa (job #1103072) | Cod sursa (job #2811866)
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <bitset>
#include <queue>
using namespace std;
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
struct Nod
{
int ind;
set<int> edges;
Nod(int x){ind = x;}
Nod(){};
};
vector<Nod> a;
int n, m;
const int MAXN = 50004;
int hs[MAXN];
int result[MAXN], nq;
void kahn()
{
for(int i = 1; i <= n; i++)
if(!hs[i]) result[++nq] = i;
for(int i = 1; i <= n; i++)
{
int crt = result[i];
for(auto& it : a[crt].edges)
{
hs[it]--;
if(!hs[it]) result[++nq] = it;
}
}
}
int main()
{
a.push_back(Nod(0));
fin >> n >> m;
for(int i = 1; i <= n; i++) a.push_back(Nod(i));
for(int i = 0; i < m; i++)
{
int x, y;
fin >> x >> y;
hs[y]++;
a[x].edges.insert(y);
}
kahn();
for(int i = 1; i <= nq; i++)
fout << result[i] << " ";
return 0;
}