Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <vector>
  4. #include <set>
  5. #include <map>
  6. #include <string>
  7. #include <algorithm>
  8. #include <cmath>
  9.  
  10. using namespace std;
  11. bool fl = false;
  12. void dfs(int &v, vector<vector<int>> &a, vector<int> &used, vector<int> &ans)
  13. {
  14. used[v] = 1;
  15. for (int i = 0; i < a[v].size(); ++i)
  16. if (used[a[v][i]] == 0)
  17. dfs(a[v][i], a, used, ans);
  18. else
  19. if(used[a[v][i]] == 1)
  20. fl = true;
  21. used[v] = 2;
  22. ans.push_back(v);
  23. }
  24.  
  25. void main()
  26. {
  27. #ifdef _DEBUG
  28. freopen("input.txt", "r", stdin);
  29. freopen("output.txt", "w", stdout);
  30. #endif
  31. int n, k;
  32. cin >> n >> k;
  33. vector<vector<int>> a(n);
  34. vector<int> b(k);
  35. vector<int> used(n);
  36. vector<int> ans;
  37. for (int i = 0; i < k; ++i)
  38. {
  39. cin >> b[i];
  40. b[i]--;
  41. }
  42. for (int i = 0; i < n; ++i)
  43. {
  44. int m;
  45. cin >> m;
  46. for (int j = 0; j < m; ++j)
  47. {
  48. int ch;
  49. cin >> ch;
  50. ch--;
  51. a[i].push_back(ch);
  52. //a[ch].push_back(i);
  53. }
  54. }
  55. for (int i = 0; i < k; ++i)
  56. {
  57. if(used[b[i]] == 0)
  58. dfs(b[i], a, used, ans);
  59. }
  60. if (fl)
  61. {
  62. cout << -1;
  63. return;
  64. }
  65. cout << ans.size() << endl;
  66. for (int i = 0; i < ans.size(); ++i)
  67. cout << ++ans[i] << " ";
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement