Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<vector>
  3.  
  4. using namespace std;
  5.  
  6. int res;
  7. vector<int> roots, init, goal;
  8. vector<vector<int>> suka(100000);
  9.  
  10. void DFS(int branch, vector<int> change, int level){
  11. if (abs(init[branch-1] - change[level]) == goal[branch-1]){
  12. for(int v:suka[branch]){
  13. DFS(v, change, 1-level);
  14. }
  15. }
  16. else{
  17. res++;
  18. roots.push_back(branch);
  19. change[level] = 1 - change[level];
  20. for(int v:suka[branch]){
  21. DFS(v, change, 1-level);
  22. }
  23. }
  24. }
  25. int main(){
  26. int n, child, dad, num;
  27. cin>>n;
  28. cin>>child>>dad;
  29. if (child != 1){
  30. suka[dad].push_back(child);
  31. for (int i = 3; i < n+1; i++){
  32. cin>>child>>dad;
  33. suka[dad].push_back(child);
  34. }}
  35. else{
  36. suka[child].push_back(dad);
  37. for (int i = 3; i < n+1; i++){
  38. cin>>child>>dad;
  39. suka[child].push_back(dad);
  40. }
  41. }
  42. for (int i = 0; i < n; i++){
  43. cin >> num;
  44. init.push_back(num);
  45. }
  46. for (int i = 0; i < n; i++){
  47. cin >> num;
  48. goal.push_back(num);
  49. }
  50. vector<int> c (2, 0);
  51. DFS(1, c, 0);
  52. cout<<res;
  53. for (int i = 0; i < res; i++){
  54. cout<<endl<<roots[i];
  55. }
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement