func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> graph[100005];   int a[100005], b[100005];   vector<int> ans;   void dfs(int source, int parent, int oddlevel, int evenlevel, int depth) {     if (depth % 2 == 1)       a[source] ^= oddlevel;     else       a[source] ^= evenlevel;     if (a[source] != b[source]) {       a[source] ^= 1;       if (depth % 2 == 1)         oddlevel++;       else         evenlevel++;       oddlevel %= 2, evenlevel %= 2;       ans.push_back(source);     }     for (int i = 0; i < graph[source].size(); i++) {       int child = graph[source][i];       if (child == parent) continue;       dfs(child, source, oddlevel, evenlevel, depth + 1);     }   }   int main() {     int n;     cin >> n;     for (int i = 1; i < n; i++) {       int x, y;       cin >> x >> y;       graph[x].push_back(y);       graph[y].push_back(x);     }     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     for (int i = 1; i <= n; i++) cin >> b[i];     dfs(1, 0, 0, 0, 0);     cout << ans.size() << endl;     for (int i = 0; i < ans.size(); i++) {       cout << ans[i] << endl;     }     return 0;   }   