Pagini recente » Profil Raul | Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/superboolaneala | Cod sursa (job #1171574)
#include <fstream>
#include <algorithm>
#include <bitset>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#if __cplusplus > 199711L
#include <unordered_map>
#include <unordered_set>
#endif
#include <cmath>
#include <cstring>
#include <cstdlib>
using namespace std;
int N, M;
int deg[50010];
vector<int> Graph[50010], Q;
int main()
{
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int x, y, i, node;
vector<int>::iterator it, _it;
fin >> N >> M;
while(M--)
{
fin >> x >> y;
Graph[x].push_back(y);
++deg[y];
}
for (i = 1; i <= N; ++i)
if (!deg[i])
Q.push_back(i);
for (i = 0; i < N; ++i)
{
node = Q[i];
for (_it = Graph[node].begin(); _it != Graph[node].end(); ++_it)
{
--deg[*_it];
if (!deg[*_it])
Q.push_back(*_it);
}
}
for (it = Q.begin(); it != Q.end(); ++it)
fout << *it << ' ';
fout << '\n';
fout.close();
return 0;
}