K.cpp 917 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <cstring>
  2. #include <iostream>
  3. #include <cstdio>
  4. using namespace std;
  5. int n, m;
  6. const int MAXN = 510;
  7. bool maps[MAXN][MAXN];
  8. int out[MAXN];
  9. int in[MAXN];
  10. int main() {
  11. while (cin >> n >> m) {
  12. memset(in, 0, sizeof(in));
  13. memset(maps, false, sizeof(maps));
  14. for (int i = 0; i < m; i++) {
  15. int x, y;
  16. cin >> x >> y;
  17. if (maps[x][y] == false) {
  18. maps[x][y] = true;
  19. in[y]++;
  20. }
  21. }
  22. int cnt = 0;
  23. while (cnt < n) {
  24. int j = -1;
  25. for (int i = 1; i <= n; i++) {
  26. if (in[i] == 0) {
  27. out[cnt++] = i;
  28. in[i] = -1;
  29. j = i;
  30. break;
  31. }
  32. }
  33. for (int i = 1; i <= n; i++) {
  34. if (maps[j][i] == true) {
  35. in[i]--;
  36. maps[j][i] = false;
  37. }
  38. }
  39. }
  40. cout << out[0];
  41. for (int i = 1; i < cnt; i++) {
  42. cout << " " << out[i];
  43. }
  44. cout << endl;
  45. }
  46. }