#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 5e4 + 5;
// Yêu cầu làm qua trước bài Reachable Nodes
// Bài này chỉ khác là thay vì cho đồ thị DAG thì cho đồ thị có hướng (có thể có chu trình)
// => Nén mỗi thành phần liên thông mạnh thành một đỉnh
// => Đồ thị sau khi nén là DAG
// Đỉnh a đến được đỉnh b nếu TPLT mạnh chứa a đến được TPLT mạnh chứa b
// => Áp dụng bài Reachable Nodes
int n, m, q;
vector<int> adj[N];
int num_scc;
int tin[N], low[N], timer;
int id[N]; // id[u] = Số thứ tự của thành phần liên thông mạnh chứa u
vector<int> st;
bool in_stack[N];
void dfs1(int u) {
tin[u] = low[u] = ++timer;
st.push_back(u);
in_stack[u] = true;
for (int v : adj[u]) {
if (!tin[v]) {
dfs1(v);
}
if (in_stack[v]) {
low[u] = min(low[u], low[v]);
}
}
if (low[u] == tin[u]) {
num_scc++;
while (true) {
int v = st.back(); st.pop_back();
in_stack[v] = false;
id[v] = num_scc;
if (v == u) break;
}
}
}
vector<int> g[N]; // Danh sách kề của đồ thị sau khi nén
bool vis[N];
bitset<N> bs[N]; // bs[u] là bitset đại diện cho tập đỉnh mà u đến được (mỗi thành phần liên thông mạnh được coi là một đỉnh)
void dfs2(int u) {
vis[u] = true;
bs[u][u] = 1;
for (int v : g[u]) {
if (!vis[v]) dfs2(v);
bs[u] |= bs[v];
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m >> q;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
}
timer = 0;
for (int u = 1; u <= n; u++) {
if (!tin[u]) dfs1(u);
}
for (int u = 1; u <= n; u++) {
for (int v : adj[u]) {
if (id[u] == id[v]) continue;
g[id[u]].push_back(id[v]);
}
}
for (int u = 1; u <= num_scc; u++) {
if (!vis[u]) dfs2(u);
}
while (q--) {
int u, v;
cin >> u >> v;
cout << (bs[id[u]][id[v]] ? "YES" : "NO") << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSA1ZTQgKyA1OyAKCi8vIFnDqnUgY+G6p3UgbMOgbSBxdWEgdHLGsOG7m2MgYsOgaSBSZWFjaGFibGUgTm9kZXMKLy8gQsOgaSBuw6B5IGNo4buJIGtow6FjIGzDoCB0aGF5IHbDrCBjaG8gxJHhu5MgdGjhu4sgREFHIHRow6wgY2hvIMSR4buTIHRo4buLIGPDsyBoxrDhu5tuZyAoY8OzIHRo4buDIGPDsyBjaHUgdHLDrG5oKQovLyA9PiBOw6luIG3hu5dpIHRow6BuaCBwaOG6p24gbGnDqm4gdGjDtG5nIG3huqFuaCB0aMOgbmggbeG7mXQgxJHhu4luaCAKLy8gPT4gxJDhu5MgdGjhu4sgc2F1IGtoaSBuw6luIGzDoCBEQUcKLy8gxJDhu4luaCBhIMSR4bq/biDEkcaw4bujYyDEkeG7iW5oIGIgbuG6v3UgVFBMVCBt4bqhbmggY2jhu6lhIGEgxJHhur9uIMSRxrDhu6NjIFRQTFQgbeG6oW5oIGNo4bupYSBiCi8vID0+IMOBcCBk4bulbmcgYsOgaSBSZWFjaGFibGUgTm9kZXMKaW50IG4sIG0sIHE7ICAKdmVjdG9yPGludD4gYWRqW05dOyAKCmludCBudW1fc2NjOyAKaW50IHRpbltOXSwgbG93W05dLCB0aW1lcjsgICAKaW50IGlkW05dOyAvLyBpZFt1XSA9IFPhu5EgdGjhu6kgdOG7sSBj4bunYSB0aMOgbmggcGjhuqduIGxpw6puIHRow7RuZyBt4bqhbmggY2jhu6lhIHUgCnZlY3RvcjxpbnQ+IHN0OyAgCmJvb2wgaW5fc3RhY2tbTl07IAoKdm9pZCBkZnMxKGludCB1KSB7Cgl0aW5bdV0gPSBsb3dbdV0gPSArK3RpbWVyOyAgCglzdC5wdXNoX2JhY2sodSk7IAoJaW5fc3RhY2tbdV0gPSB0cnVlOyAgCgoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICghdGluW3ZdKSB7CgkJCWRmczEodik7ICAKCQl9CgkJaWYgKGluX3N0YWNrW3ZdKSB7CgkJCWxvd1t1XSA9IG1pbihsb3dbdV0sIGxvd1t2XSk7IAoJCX0KCX0KCglpZiAobG93W3VdID09IHRpblt1XSkgewoJCW51bV9zY2MrKzsgCgkJd2hpbGUgKHRydWUpIHsKCQkJaW50IHYgPSBzdC5iYWNrKCk7IHN0LnBvcF9iYWNrKCk7IAoJCQlpbl9zdGFja1t2XSA9IGZhbHNlOyAKCQkJaWRbdl0gPSBudW1fc2NjOyAKCQkJaWYgKHYgPT0gdSkgYnJlYWs7IAoJCX0KCX0KfQoKdmVjdG9yPGludD4gZ1tOXTsgLy8gRGFuaCBzw6FjaCBr4buBIGPhu6dhIMSR4buTIHRo4buLIHNhdSBraGkgbsOpbgoKYm9vbCB2aXNbTl07IApiaXRzZXQ8Tj4gYnNbTl07IC8vIGJzW3VdIGzDoCBiaXRzZXQgxJHhuqFpIGRp4buHbiBjaG8gdOG6rXAgxJHhu4luaCBtw6AgdSDEkeG6v24gxJHGsOG7o2MgKG3hu5dpIHRow6BuaCBwaOG6p24gbGnDqm4gdGjDtG5nIG3huqFuaCDEkcaw4bujYyBjb2kgbMOgIG3hu5l0IMSR4buJbmgpIAoKdm9pZCBkZnMyKGludCB1KSB7Cgl2aXNbdV0gPSB0cnVlOyAgCglic1t1XVt1XSA9IDE7ICAKCWZvciAoaW50IHYgOiBnW3VdKSB7CgkJaWYgKCF2aXNbdl0pIGRmczIodik7IAoJCWJzW3VdIHw9IGJzW3ZdOwoJfQp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBtID4+IHE7IAoKCWZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CgkJaW50IHUsIHY7IAoJCWNpbiA+PiB1ID4+IHY7IAoJCWFkalt1XS5wdXNoX2JhY2sodik7IAoJfQoKCXRpbWVyID0gMDsgIAoJZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKSB7CgkJaWYgKCF0aW5bdV0pIGRmczEodSk7ICAKCX0KCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKCQlmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJCWlmIChpZFt1XSA9PSBpZFt2XSkgY29udGludWU7IAkKCQkJZ1tpZFt1XV0ucHVzaF9iYWNrKGlkW3ZdKTsgCgkJfQoJfQoKCWZvciAoaW50IHUgPSAxOyB1IDw9IG51bV9zY2M7IHUrKykgewoJCWlmICghdmlzW3VdKSBkZnMyKHUpOyAKCX0KCgl3aGlsZSAocS0tKSB7CgkJaW50IHUsIHY7IAoJCWNpbiA+PiB1ID4+IHY7IAoJCWNvdXQgPDwgKGJzW2lkW3VdXVtpZFt2XV0gPyAiWUVTIiA6ICJOTyIpIDw8ICdcbic7IAoJfQp9