Advertisement
AdelKhalilov

Untitled

Jul 8th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 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 q = 0;
  12. bool used[100010];
  13.  
  14. void dfs (int v)
  15. {
  16. in[v] = t;
  17. t++;
  18. used[v] = true;
  19. for (int i = 0; i < g[v].size() ; i++)
  20. {
  21. int u = g[v][i];
  22. if (!used[u])
  23. {
  24. dfs(u);
  25. }
  26. }
  27. out[v] = t;
  28. t++;
  29. }
  30.  
  31. int main()
  32. {
  33. freopen("ancestor.in","r",stdin);
  34. freopen("ancestor.out","w",stdout);
  35. cin >> n;
  36. for (int i = 0; i < n; i++)
  37. {
  38. int a = -1;
  39. cin >> a;
  40. if (a != 0)
  41. {
  42. g[i].push_back(a - 1);
  43. g[a - 1].push_back(i);
  44. }
  45. else
  46. {
  47. q = i;
  48. }
  49. }
  50. for (int i = 0; i < n; i++)
  51. {
  52. used[i] = false;
  53. }
  54. dfs(q);
  55.  
  56. int m;
  57. cin >> m;
  58. for (int i = 0; i < m; i++)
  59. {
  60. int c, d;
  61. cin >> c >> d;
  62. if (in[c - 1] < in[d - 1] && out[d - 1] < out [c - 1])
  63. {
  64. cout << "1" << endl;
  65. }
  66. else
  67. {
  68. cout << "0" << endl;
  69. }
  70. }
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement