Nik_Perepelov

Untitled

Nov 17th, 2021
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. vector<vector<int>> graph;
  8. vector<int> result, used;
  9.  
  10. void pleaseKillMe(int v) {
  11. used[v] = 1;
  12.  
  13. for (auto child : graph[v]) {
  14. if (used[child] == 0) {
  15. pleaseKillMe(child);
  16. }
  17.  
  18. if (used[child] == 1) {
  19. cout << "No";
  20. exit(0);
  21. }
  22. }
  23. result.push_back(v);
  24.  
  25. used[v] = 2;
  26. }
  27.  
  28. int main() {
  29.  
  30. size_t n, m;
  31.  
  32. cin >> n >> m;
  33.  
  34. graph.resize(n);
  35. used.resize(n, 0);
  36.  
  37. for (size_t i = 0; i < m; i++) {
  38. size_t from, to;
  39. cin >> from >> to;
  40.  
  41. graph[to - 1].push_back(from - 1);
  42. }
  43.  
  44. for (size_t i = 0; i < n; i++) {
  45. if (used[i] == 0) {
  46. pleaseKillMe(i);
  47. }
  48. }
  49.  
  50. cout << "Yes\n";
  51.  
  52. for (auto soldier : result) {
  53. cout << soldier + 1 << ' ';
  54. }
  55.  
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment