/** * @file main.cpp * @brief 俺の競技プログラミングのデッキ * @author Gex777 * @date update:2023/04/21 * @details boost */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include //ACL(環境依存) // #include using namespace std; // using namespace atcoder; // namespace mp = boost::multiprecision; // using Bint = mp::cpp_int; // 独自型定義 typedef long long ll; typedef unsigned long long ull; typedef vector vi; typedef vector vvi; typedef vector vll; typedef vector vvll; typedef vector vvvll; typedef vector vs; typedef vector vc; typedef vector vvc; typedef vector vb; typedef vector vvb; typedef vector vd; typedef vector vvd; typedef long double ld; typedef pair pii; typedef pair pll; using AdjacencyList = map; using EdgeAdjacencyList = map>; // マクロの宣言 #define all(x) x.begin(), x.end() // 定数宣言 constexpr double PI = 3.141592653589793; constexpr ll MOD998 = 998244353; constexpr ll MOD107 = 1'000'000'007; // コンテナの中身を表示, 1行で出力をする, debug用 template void printv(T &a) { for (const auto &x : a) { cout << x << " "; } puts(""); return; } // コンテナの中身を表示, 改行して出力をする, debug用 template void println(T &a) { for (const auto &x : a) { cout << x << endl; } return; } /*############################################## ################################################*/ int main() { int N, M; cin >> N >> M; constexpr int BNUM = 20000; vector> Friend(N); //i番目の人とj番目の人はフレンドか vector> world(N); //world[i]にj番目の人がいるか vector pos(N); //i番目の人が今いるワールドの番号 for (int i = 0; i < N; ++i) { int p; cin >> p; p--; world[p].set(i); pos[i] = p; } for (int i = 0; i < M; ++i) { int A, B; cin >> A >> B; --A; --B; // cout <<"A="<< A <<" B="<< B << endl; Friend[A].set(B); Friend[B].set(A); } int Q; cin >> Q; vs ans(Q, "No"); for (int i = 0; i < Q; ++i) { // cout << "Q=" << i << endl; int X, Y; cin >> X >> Y; --X; --Y; if (pos[X]==pos[Y]) { // puts("same world"); continue; } for (int j = 0; j < N; ++j) //Xのフレンドを調べる { if (X != j && Friend[X][j] && world[pos[Y]][j]) // Xとjはフレンドで、Yのいるワールドにjもいる { world[pos[X]].reset(X); world[pos[Y]].set(X); pos[X] = pos[Y]; ans[i] = "Yes"; break; } } } println(ans); //クエリの結果を出力 }