Pagini recente » Cod sursa (job #2904271) | Cod sursa (job #2721368) | Cod sursa (job #1741040) | Cod sursa (job #726197) | Cod sursa (job #1107940)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define M_MAX 100005
#define N_MAX 50005
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int N, M, grad[N_MAX], s[N_MAX], is;
vector <int> v[M_MAX];
queue <int> q;
void BFS()
{
while(!q.empty())
{
int node = q.front();
q.pop();
for(int i = 0; i < v[node].size(); i++)
{
grad[v[node][i]]--;
if(!grad[v[node][i]])
{
s[is++] = v[node][i];
q.push(v[node][i]);
}
}
}
}
int main()
{
in >> N >> M;
for(int i = 0, a, b; i < M; i++)
{
in >> a >> b;
grad[b]++;
v[a].push_back(b);
}
for(int i = 1; i <= N; i++)
{
if(!grad[i]) {
q.push(i);
s[is++] = i;
}
}
BFS();
for(int i = 0; i < N; i++)
out << s[i] << " ";
return 0;
}