func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, m, dp[1 << 19][21], a[22][22], ans;   long long lowbit(long long x) { return (x & (-x)); }   int main() {     memset(a, 0, sizeof(a));     memset(dp, 0, sizeof(dp));     scanf( %lld%lld , &n, &m);     for (int i = 1; i <= m; i++) {       int x, y;       scanf( %d%d , &x, &y);       a[x - 1][y - 1] = a[y - 1][x - 1] = 1;     }     for (int i = 0; i <= n; i++) dp[1 << i][i] = 1;     for (int mask = 1; mask < (1 << n); mask++) {       for (int ed = 0; ed < n; ed++) {         if (!dp[mask][ed]) continue;         for (int nxt = 0; nxt < n; nxt++) {           if (!a[ed][nxt]) continue;           if (lowbit(mask) > (1 << nxt)) continue;           if (mask & (1 << nxt)) {             if ((lowbit(mask)) == (1 << nxt)) ans += dp[mask][ed];           } else             dp[(mask | (1 << nxt))][nxt] += dp[mask][ed];         }       }     }     printf( %lld , (ans - m) / 2);     return 0;   }   