func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 25;   inline int getDis(pair<int, int> a, pair<int, int> b) {     return (b.first - a.first) * (b.first - a.first) +            (b.second - a.second) * (b.second - a.second);   }   pair<int, int> G[maxn];   int dp[1 << maxn];   int dis[maxn][maxn], route[1 << maxn];   int n;   int main() {     scanf( %d%d , &G[0].first, &G[0].second);     scanf( %d , &n);     for (register int i = 1; i <= n; i++)       scanf( %d%d , &G[i].first, &G[i].second);     for (register int i = 0; i <= n; i++)       for (register int j = i; j <= n; j++)         dis[i][j] = dis[j][i] = getDis(G[i], G[j]);     memset(route, -1, sizeof route);     for (register int i = 0; i < (1 << maxn); i++) dp[i] = 0x3f3f3f3f;     dp[0] = 0;     for (register int i = 0; i < (1ll << n); i++) {       if (dp[i] == 0x3f3f3f3f) continue;       for (register int j = 1; j <= n; j++) {         if (i & (1ll << (j - 1))) continue;         for (register int k = 1; k <= n; k++) {           if (i & (1ll << (k - 1))) continue;           if (dp[i] + dis[0][j] + dis[j][k] + dis[k][0] <               dp[i | (1ll << (j - 1)) | (1ll << (k - 1))]) {             route[i | (1ll << (j - 1) | (1ll << (k - 1)))] = i;             dp[i | (1ll << (j - 1)) | (1ll << (k - 1))] =                 min(dp[i | (1ll << (j - 1)) | (1ll << (k - 1))],                     dp[i] + dis[0][j] + dis[j][k] + dis[k][0]);           }         }         break;       }     }     printf( %d n , dp[(1 << n) - 1]);     int now = (1 << n) - 1, last = -1;     printf( 0  );     while (true) {       if (last == -1) {         last = now;         now = route[now];         continue;       } else {         int change = now ^ last;         for (register int i = 1; i <= n; i++) {           if (change & (1ll << (i - 1))) {             printf( %d  , i);           }         }         last = now;         now = route[now];         if (now == -1) {           for (register int i = 1; i <= n; i++) {             if (last & (1 << (i - 1))) {               printf( %d  , i);             }           }           break;         }       }       printf( 0  );     }     printf( 0 );     return 0;   }   