第5题并查集 vector<int> meituan5() {   int n, m;   cin >> n;   vector<int> tree(n + 1, 0);   vector<int> weights(n + 1, 0);   for (int i = 2; i <= n; ++i) {     cin >> tree[i];   }   for (int i = 1; i <= n; ++i) {     cin >> weights[i];   }   cin >> m;   vector<vector<int>> requests(m, vector<int>(2));   for (int i = 0; i < m; ++i)     cin >> requests[i][0];   for (int i = 0; i < m; ++i)     cin >> requests[i][1];   vector<int> res(m);   int beg, end, currNode, val;   for (int i = 0; i < m; ++i) {     beg = requests[i][0];     end = requests[i][1];     currNode = beg;     val = 0;     while (currNode != 1 && currNode != end) {       val ^= weights[currNode];       currNode = tree[currNode];     }     if (currNode == 1) {       currNode = end;       while (currNode != 1) {         val ^= weights[currNode];         currNode = tree[currNode];       }       val ^= weights[1];     } else {       val ^= weights[end];     }     res[i] = val;   }   return res; }