func_code_string: #include <bits/stdc++.h>   using namespace std;   struct data {     int val;     int col;     vector<int> vec;   } arr[100005];   void connect(int a, int b) {     arr[a].vec.push_back(b);     arr[b].vec.push_back(a);   }   int goal[100005];   vector<int> ans;   void dfs(int n, int fl, int flip, int flip1) {     arr[n].col = 1;     if (fl % 2 == 0) {       if (flip % 2 == 0) {         if (arr[n].val != goal[n]) {           if (arr[n].val == 0)             arr[n].val = 1;           else             arr[n].val = 0;           ans.push_back(n);           flip++;         } else {         }       } else {         if (arr[n].val == 0)           arr[n].val = 1;         else           arr[n].val = 0;         if (arr[n].val != goal[n]) {           if (arr[n].val == 0)             arr[n].val = 1;           else             arr[n].val = 0;           ans.push_back(n);           flip++;         }       }     } else {       if (flip1 % 2 == 0) {         if (arr[n].val != goal[n]) {           if (arr[n].val == 0)             arr[n].val = 1;           else             arr[n].val = 0;           ans.push_back(n);           flip1++;         }       } else {         if (arr[n].val == 0)           arr[n].val = 1;         else           arr[n].val = 0;         if (arr[n].val != goal[n]) {           if (arr[n].val == 0)             arr[n].val = 1;           else             arr[n].val = 0;           ans.push_back(n);           flip1++;         }       }     }     fl++;     for (int i = 0; i < arr[n].vec.size(); i++) {       if (arr[arr[n].vec[i]].col == 0) dfs(arr[n].vec[i], fl, flip, flip1);     }     return;   }   int main() {     ios_base::sync_with_stdio(0);     int n;     cin >> n;     for (int i = 1; i < n; i++) {       int aa, bb;       cin >> aa >> bb;       connect(aa, bb);     }     for (int i = 1; i <= n; i++) {       int v;       cin >> v;       arr[i].val = v;       arr[i].col = 0;     }     for (int i = 1; i <= n; i++) {       cin >> goal[i];     }     dfs(1, 0, 0, 0);     int si = ans.size();     cout << si << endl;     for (int i = 0; i < si; i++) {       cout << ans[i] << endl;     }   }   