func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 100010;   vector<int> a[MAX], ans;   int x, y, n;   bool v[MAX], d[MAX], f[MAX], l[MAX], odd[MAX], even[MAX];   void DFS(int start) {     v[start] = true;     if (d[start] && odd[start]) {       f[start] = (1 - f[start]);     }     if (!d[start] && even[start]) {       f[start] = (1 - f[start]);     }     if (f[start] != l[start]) {       ans.push_back(start);       if (d[start]) {         odd[start] = (1 - odd[start]);       } else {         even[start] = (1 - even[start]);       }     }     int current;     for (int i = 0; i < a[start].size(); i++) {       current = a[start][i];       if (!v[current]) {         d[current] = (1 - d[start]);         odd[current] = odd[start];         even[current] = even[start];         DFS(current);       }     }   }   int main() {     cin >> n;     for (int i = 1; i < n; i++) {       cin >> x >> y;       a[x].push_back(y);       a[y].push_back(x);     }     for (int i = 1; i <= n; i++) {       cin >> f[i];     }     for (int i = 1; i <= n; i++) {       cin >> l[i];     }     DFS(1);     cout << ans.size() <<   n ;     for (int i = 0; i < ans.size(); i++) {       cout << ans[i] <<   n ;     }     cout <<   n ;     return 0;   }   