#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
vector<int> g[N];
int n;
int a[N], b[N];
vector<int> ans;
void DFS(int u, int p, int p1, int p2) {
  if ((a[u] + p2) % 2 != b[u]) {
    ans.push_back(u);
    int tmp = p2;
    p2 = p1;
    p1 = (tmp + 1) & 1;
  } else {
    int tmp = p2;
    p2 = p1;
    p1 = tmp;
  }
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    if (v != p) DFS(v, u, p1, p2);
  }
}
int dddd;
int main() {
  int cc;
  cin >> n;
  for (int i = 1; i < n; i++) {
    int x, y;
    cin >> x >> y;
    g[x].push_back(y);
    g[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);
  int t = ans.size();
  cout << t << endl;
  sort(ans.begin(), ans.end());
  for (int i = 0; i < t; i++) cout << ans[i] << " ";
  cout << endl;
}
