#include #include using namespace std; using namespace atcoder; int main() { int N, M;cin >> N >> M; dsu uf(N); vector P(N); for (int i = 0;i < N;i++) cin >> P[i]; for (int i = 0;i < M;i++) { int a, b;cin >> a >> b; a--;b--; uf.merge(a, b); } int Q;cin >> Q; vector> C(N + 1); for (int v = 0;v < N;v++) C[P[v]].insert(uf.leader(v)); while (Q--) { int x, y;cin >> x >> y;x--;y--; if (P[x] == P[y]) { cout << "No" << endl; continue; } int rx = uf.leader(x); int px = P[x];int py = P[y]; if (C[py].find(rx) == C[py].end()) { cout << "No" << endl; continue; } C[py].insert(rx); C[px].erase(C[px].find(rx)); P[x] = py; cout << "Yes" << endl; } }