Pagini recente » Cod sursa (job #1384308) | Cod sursa (job #761515) | Cod sursa (job #1769297) | Cod sursa (job #875719) | Cod sursa (job #1152897)
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#define NMAX 50007
using namespace std;
int n, Ap[NMAX], m;
vector< int > Sol, v[NMAX];
queue< int > q;
void sortare_top(){
for(int i = 1; i <= n; ++i)
if(Ap[i] == 0)
q.push(i);
while(! q.empty()){
int Nod = q.front();
q.pop();
Sol.push_back(Nod);
for(vector< int >::iterator it = v[Nod].begin(); it != v[Nod].end(); ++it){
--Ap[*it];
if(Ap[*it] == 0)
q.push(*it);
}
}
}
int main(){
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= m; ++i){
int a = 0, b = 0;
scanf("%d %d", &a, &b);
++Ap[b];
v[a].push_back(b);
}
sortare_top();
for(vector< int >::iterator it = Sol.begin(); it != Sol.end(); ++it)
printf("%d ", *it);
return 0;
}