#include using namespace std; const int LOG = 18; void dfs(vector> &E, vector &d, vector &p, vector> &c, vector &in, int v){ in.push_back(v); for (int w : E[v]){ if (d[w] == -1){ d[w] = d[v] + 1; p[w] = v; c[v].push_back(w); dfs(E, d, p, c, in, w); } } } int main(){ int N, M, Q; cin >> N >> M >> Q; vector> E(N); for (int i = 0; i < M; i++){ int u, v; cin >> u >> v; u--; v--; E[u].push_back(v); E[v].push_back(u); } vector p(N, -1); vector> c(N); vector d(N, -1); vector imos(N, 0); vector in; for (int i = 0; i < N; i++){ if (d[i] == -1){ d[i] = 0; if (i > 0){ p[i] = 0; c[0].push_back(i); d[i] = 1; imos[i]++; imos[0]--; } dfs(E, d, p, c, in, i); } } for (int i = 0; i < N; i++){ for (int j : E[i]){ if (d[j] < d[i] - 1){ imos[i]++; imos[j]--; } } } reverse(in.begin(), in.end()); for (int v : in){ if (v != 0){ imos[p[v]] += imos[v]; } } vector> pp(LOG, vector(N, -1)); pp[0] = p; vector> sum(LOG, vector(N, 0)); sum[0] = imos; for (int i = 0; i < LOG - 1; i++){ for (int j = 0; j < N; j++){ if (pp[i][j] != -1){ pp[i + 1][j] = pp[i][pp[i][j]]; if (pp[i + 1][j] != -1){ sum[i + 1][j] = sum[i][j] + sum[i][pp[i][j]]; } } } } for (int i = 0; i < Q; i++){ int x, y; cin >> x >> y; x--; y--; if (d[x] > d[y]){ swap(x, y); } int s = 0; for (int j = 0; j < LOG; j++){ if (((d[y] - d[x]) >> j & 1) == 1){ s += sum[j][y]; y = pp[j][y]; } } if (x != y){ for (int j = LOG - 1; j >= 0; j--){ if (pp[j][x] != pp[j][y]){ s += sum[j][x]; s += sum[j][y]; x = pp[j][x]; y = pp[j][y]; } } s += sum[0][x]; s += sum[0][y]; } if (s == 0){ cout << "Yes" << endl; } else { cout << "No" << endl; } } }