func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 1000000000 + 7;   map<int, vector<int>> mp;   vector<int> cur(1, -1), goal(1, -1), done(1, -1);   vector<int> ans;   int c;   void funct(int node, int level, int even, int odd) {     int r = level % 2;     done[node] = 1;     if (r == 1 && odd == 1)       cur[node] = 1 - cur[node];     else if (r == 0 && even == 1)       cur[node] = 1 - cur[node];     if (cur[node] != goal[node]) {       c++;       ans.push_back(node);       cur[node] = goal[node];       if (level % 2 == 0)         even = 1 - even;       else         odd = 1 - odd;     }     for (int i = 0; i < mp[node].size(); i++) {       if (done[mp[node][i]] == 0) funct(mp[node][i], level + 1, even, odd);     }   }   int main() {     int n;     cin >> n;     for (int i = 0; i < n - 1; i++) {       int a, b;       cin >> a >> b;       mp[a].push_back(b);       mp[b].push_back(a);     }     int num;     for (int i = 1; i <= n; i++) {       scanf( %d , &num);       cur.push_back(num);     }     for (int i = 1; i <= n; i++) {       scanf( %d , &num);       goal.push_back(num);       done.push_back(0);     }     c = 0;     int level = 0, even = 0, odd = 0;     funct(1, level, even, odd);     cout << c << endl;     if (c > 0) {       int i = 0;       while (i < ans.size()) {         printf( %d n , ans[i]);         i++;       }     }     return 0;   }   