Pagini recente » Cod sursa (job #336875) | Arhiva de probleme | Cod sursa (job #249008) | Cod sursa (job #543921) | Cod sursa (job #1118084)
#include <cstdio>
#include <vector>
using namespace std;
#define FILEIN "sortaret.in"
#define FILEOUT "sortaret.out"
#define NMAX 50005
vector<int> A[NMAX];
int degIn[NMAX];
int n, m;
vector<int> sol;
int main() {
freopen(FILEIN, "r", stdin);
freopen(FILEOUT, "w", stdout);
scanf("%d %d", &n, &m);
for ( int i = 1, x, y; i <= m; i++ ) {
scanf("%d %d", &x, &y);
A[x].push_back(y);
degIn[y]++;
}
for ( int i = 1; i <= n; i++ ) {
if (!degIn[i])
sol.push_back(i);
}
for ( int i = 0; i < n; i++ ) {
int x = sol[i];
for ( int j = 0; j < A[x].size(); j++ ) {
degIn[A[x][j]]--;
if (!degIn[A[x][j]])
sol.push_back(A[x][j]);
}
}
for ( int i = 0; i < n; i++ ) {
printf("%d ", sol[i]);
}
printf("\n");
return 0;
}