func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Edge {     int v, f;     Edge *next, *rest;   };   int n, m, b, x[100], k[100], p[100];   long long dp[1048576];   long long ans = 0x3FFFFFFFFFFFFFFFLL;   int main() {     scanf( %d%d%d , &n, &m, &b);     for (int i = 0, len; i < n; i++) {       scanf( %d%d%d , &x[i], &k[i], &len);       for (int j = 0, t; j < len; j++) scanf( %d , &t), p[i] |= 1 << (t - 1);       p[i] ^= (1 << m) - 1;     }     for (int i = 0; i < n; i++) {       for (int j = n - 1; j > i; j--) {         if (k[j - 1] > k[j])           swap(k[j - 1], k[j]), swap(x[j - 1], x[j]), swap(p[j - 1], p[j]);       }     }     for (int i = 1; i < 1 << m; i++) dp[i] = 0x3FFFFFFFFFFFFFFFLL;     for (int i = 0; i < n; i++) {       for (int j = 0; j < 1 << m; j++) dp[j] = min(dp[j], dp[j & p[i]] + x[i]);       if (dp[(1 << m) - 1] < 0x3FFFFFFFFFFFFFFFLL)         ans = min(ans, dp[(1 << m) - 1] + (long long)k[i] * b);     }     printf( %I64d , ans == 0x3FFFFFFFFFFFFFFFLL ? -1 : ans);     getchar();     getchar();     return 0;   }   