#include #include #include #include #define M 11 #define N 31 using namespace std; using namespace std::chrono; typedef pair pi; int m, n, res; int pl[M], lot[M]; // preference_list, load of teacher int cc[N]; // conflict courses, num of teachers in a course int cwc = 0; // num of courses was choosed void setData() { int k, x, y, temp; scanf("%d %d", &m, &n); for (int i = 1; i <= m; i++) { scanf("%d", &k); x = 0; for (int j = 0; j < k; j++) { scanf("%d", &temp); x |= (1< res) continue; int temp = (cc[i]) & (pl[t]); ++lot[t]; pl[t] ^= temp; if (i == n) { res = min(load_max(), res); } else { run_recur(i+1); } --lot[t]; pl[t] |= temp; } } } int main() { res = N + 1; setData(); // auto start = steady_clock::now(); run_recur(1); cout << (res > N ? -1 : res); // auto finish = steady_clock::now(); // // duration f = finish - start; // cout << endl << "Time: " << f.count(); return 0; }