func_code_string: #include <bits/stdc++.h>   using namespace std;   long long points[1002][2];   long long circle[1002][3];   vector<long long> tree[1002];   bool mark[1002];   vector<long long> paths[1002];   long long inside[1002];   long long dist2(long long a, long long b, long long c, long long d) {     return (a - c) * (a - c) + (b - d) * (b - d);   }   void dfs(long long v, long long parent) {     mark[v] = 1;     if (parent != -1) paths[v] = paths[parent];     paths[v].push_back(v);     for (long long i = 0; i < tree[v].size(); i++)       if (!mark[tree[v][i]]) dfs(tree[v][i], v);   }   int main() {     long long n, m, k, a, b, p;     cin >> n >> m >> k;     for (long long i = 0; i < n; i++) cin >> points[i][0] >> points[i][1];     for (long long i = 0; i < m; i++)       cin >> circle[i][0] >> circle[i][1] >> circle[i][2];     for (long long i = 0; i < m; i++) {       long long parent = m;       long long min_radius = 2000000000;       for (long long j = 0; j < m; j++) {         if (circle[j][0] <= circle[i][0]) continue;         if (dist2(circle[i][1], circle[i][2], circle[j][1], circle[j][2]) >             circle[j][0] * circle[j][0])           continue;         if (min_radius > circle[j][0]) {           parent = j;           min_radius = circle[j][0];         }       }       tree[parent].push_back(i);     }     for (long long i = 0; i < n; i++) {       long long parent = m;       long long min_radius = 2000000000;       for (long long j = 0; j < m; j++) {         if (dist2(points[i][0], points[i][1], circle[j][1], circle[j][2]) >             circle[j][0] * circle[j][0])           continue;         if (min_radius > circle[j][0]) {           parent = j;           min_radius = circle[j][0];         }       }       inside[i] = parent;     }     dfs(m, -1);     for (long long i = 0; i < k; i++) {       cin >> a >> b;       a = inside[a - 1];       b = inside[b - 1];       p = 0;       while (p < min(paths[a].size(), paths[b].size()) &&              paths[a][p] == paths[b][p])         p++;       cout << (long long)paths[a].size() + (long long)paths[b].size() - p - p            << endl;     }     return 0;   }   