func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> s[222222], ss[222222];   int n, m, cnt, cnt2, h;   int up[222222][22], fa[222222], deep[211111], q[211111], dfn[211111],       low[211111];   void tarjan(int x) {     int c, i, y;     dfn[x] = low[x] = ++cnt;     q[h] = x;     h++;     c = s[x].size();     for (i = 0; i < c; i++) {       y = s[x][i];       if (dfn[y] == 0) {         tarjan(y);         low[x] = min(low[x], low[y]);         if (low[y] >= dfn[x]) {           cnt2++;           while (h > 0) {             h--;             ss[cnt2].push_back(q[h]);             ss[q[h]].push_back(cnt2);             if (q[h] == y) break;           }           ss[cnt2].push_back(x);           ss[x].push_back(cnt2);         }       } else         low[x] = min(low[x], dfn[y]);     }   }   void make_yfs() {     int i;     cnt = 0, h = 0, cnt2 = n;     tarjan(1);   }   void dfs(int x) {     int c, i, y;     c = ss[x].size();     for (i = 0; i < c; i++) {       y = ss[x][i];       if (fa[x] == y) continue;       fa[y] = up[y][0] = x;       deep[y] = deep[x] + 1;       dfs(y);     }   }   int lca(int x, int y) {     int tmp = 20;     if (deep[x] < deep[y]) swap(x, y);     while (1) {       if ((1 << tmp) <= deep[x] - deep[y]) x = up[x][tmp];       tmp--;       if (tmp < 0) break;     }     if (x == y) return x;     tmp = 20;     while (1) {       if (up[x][tmp] != up[y][tmp]) x = up[x][tmp], y = up[y][tmp];       tmp--;       if (tmp < 0) break;     }     return fa[x];   }   int getdis(int x, int y) {     int L;     L = lca(x, y);     return deep[x] - deep[L] + deep[y] - deep[L];   }   int main() {     int i, m, x, y, q, ans;     scanf( %d%d%d , &n, &m, &q);     for (i = 1; i <= m; i++) {       scanf( %d%d , &x, &y);       s[x].push_back(y);       s[y].push_back(x);     }     make_yfs();     dfs(1);     for (int j = 1; j <= 20; j++)       for (i = 1; i <= cnt2; i++) up[i][j] = up[up[i][j - 1]][j - 1];     while (q--) {       scanf( %d%d , &x, &y);       ans = getdis(x, y) / 2;       printf( %d n , ans);     }     return 0;   }   