func_code_string: #include <bits/stdc++.h>   using namespace std;   const double eps = 1e-10;   const int maxn = (1 << 11) + 100;   int dp[maxn][maxn];   vector<int> g[15];   int n, m, k, u, v, mx, cc[maxn];   void init() {     for (int i = 0; i < maxn; ++i) cc[i] = __builtin_popcount(i);   }   int main() {     init();     cin >> n >> m >> k;     for (int i = 0; i < m; ++i) {       cin >> u >> v;       u--;       v--;       g[v].push_back(u);       g[u].push_back(v);     }     mx = (1 << n) - 1;     for (int i = 1; i <= mx; i <<= 1) dp[i][i] = 1;     for (int i = 1; i <= mx; ++i) {       for (int j = i; j; --j &= i) {         if (dp[i][j]) {           for (int k = 0; k < n; ++k) {             if (i & (1 << k)) {               for (int u : g[k]) {                 if (~i & (1 << u)) {                   if (cc[i] == 1)                     v = i | (1 << u);                   else                     v = j & ~(1 << k) | (1 << u);                   if (!(v >> u + 1)) dp[i | (1 << u)][v] += dp[i][j];                 }               }             }           }         }       }     }     long long ans = 0;     for (int i = 0; i < mx; ++i)       if (cc[i] == k) ans += dp[mx][i];     cout << ans << endl;     return 0;   }   