Advertisement
AdelKhalilov

Untitled

Jul 8th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int n;
  7. vector <int> g[100010];
  8. int in[100010];
  9. int out[100010];
  10. int t = 1 ;
  11. int color[100010];
  12. int q = 0;
  13.  
  14. void dfs (int v)
  15. {
  16. cout << v << " ";
  17. in[v] = t;
  18. t++;
  19. color[v] = 1;
  20. cout << g[0].size() << " ";
  21. for (int i = 0; i < g[v].size(); i++)
  22. {
  23. int u = g[v][i];
  24. cout << u << " " << color[u];
  25. if (color[u] == 0)
  26. {
  27. dfs(u);
  28. }
  29. }
  30. out[v] = t;
  31. t++;
  32. color[v] = 2;
  33. }
  34.  
  35. int main()
  36. {
  37. cin >> n;
  38. for (int i = 0; i < n; i++)
  39. {
  40. int x;
  41. cin >> x;
  42. if (x != 0)
  43. {
  44. g[i].push_back(x - 1);
  45. g[x - 1].push_back(i);
  46. }
  47. else
  48. {
  49. q = i;
  50. }
  51. }
  52. for (int i = 0; i < g[0].size(); i++)
  53. {
  54. cout << g[0][i] << " " ;
  55. }
  56. cout << endl;
  57.  
  58.  
  59. for (int i = 0 ; i < sizeof(color) ; i++)
  60. color[i] = 0;
  61.  
  62. dfs(q);
  63.  
  64. int m;
  65. cin >> m;
  66. cout << endl;
  67. for (int i = 0; i < n ; i++)
  68. {
  69. cout << in[i] << " " << out[i] << endl;
  70. }
  71.  
  72. for (int i = 0; i < m; i++)
  73. {
  74. int a, b;
  75. cin >> a >> b;
  76. if (in[a - 1] < in[b - 1] && out[b - 1] < out [a - 1])
  77. {
  78. cout << "1" << endl;
  79. }
  80. else
  81. {
  82. cout << "0" << endl;
  83. }
  84. }
  85. return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement