func_code_string: #include <bits/stdc++.h>   using namespace std;   struct edge {     int to, next;   } e[200010];   int n, m, q, cnt, father[100010], fa[100010][30], a[100010], dis[100010],       deep[100010], head[100010];   inline void add(int u, int v) {     cnt++;     e[cnt].to = v;     e[cnt].next = head[u];     head[u] = cnt;   }   inline int find(int x) {     return father[x] == x ? x : father[x] = find(father[x]);   }   inline void dfs(int u) {     deep[u] = deep[fa[u][0]] + 1;     for (int i = head[u]; i; i = e[i].next) {       int v = e[i].to;       if (!deep[v]) {         fa[v][0] = u;         dfs(v);         if (find(u) == find(v)) a[u] |= a[v];       } else if (deep[v] < deep[u] - 1) {         if ((deep[u] + deep[v] + 1) & 1) a[u] = 1;         for (int x = find(u); deep[x] > deep[v] + 1; x = find(x))           father[x] = fa[x][0];       }     }   }   inline void dfs2(int u) {     dis[u] += a[u];     for (int i = head[u]; i; i = e[i].next) {       int v = e[i].to;       if (deep[v] != deep[u] + 1) continue;       if (find(u) == find(v)) a[v] |= a[u];       dis[v] = dis[u];       dfs2(v);     }   }   inline int LCA(int x, int y) {     if (deep[x] > deep[y]) swap(x, y);     for (int i = 20; i >= 0; i--)       if (deep[fa[y][i]] >= deep[x]) y = fa[y][i];     if (x == y) return x;     for (int i = 20; i >= 0; i--)       if (fa[x][i] != fa[y][i]) x = fa[x][i], y = fa[y][i];     return fa[x][0];   }   inline bool check(int u, int v) {     if (!LCA(u, v)) return 0;     if ((deep[u] + deep[v]) & 1) return 1;     if (dis[u] + dis[v] - 2 * dis[LCA(u, v)]) return 1;     return 0;   }   int main() {     scanf( %d%d , &n, &m);     for (int i = 1; i <= n; i++) father[i] = i;     for (int i = 1, x, y; i <= m; i++) {       scanf( %d%d , &x, &y);       add(x, y);       add(y, x);     }     for (int i = 1; i <= n; i++)       if (!deep[i]) dfs(i), dfs2(i);     for (int i = 1; i <= 20; i++)       for (int j = 1; j <= n; j++) fa[j][i] = fa[fa[j][i - 1]][i - 1];     scanf( %d , &q);     while (q--) {       int x, y;       scanf( %d%d , &x, &y);       if (check(x, y))         puts( Yes );       else         puts( No );     }     return 0;   }   