提交时间:2022-07-19 12:08:35

运行 ID: 52406

#include <bits/stdc++.h> using namespace std; const int N = 5e5 + 10; int n, m, k[N], vis[N], ans, in; vector<int>wire[4500]; void dfs(int now) { int flg = 0; for(int i = 1; i <= k[now]; i++) { for(int j = i + 1; j <= k[now]; j++) { if(vis[i] or vis[j]) continue; flg = 1; vis[i] = vis[j] = 1; dfs(now + 1); vis[i] = vis[j] = 0; } } if(!flg) { ans = max(ans, now); } } //void solsub() //{ // for(int i = 1; i <= m; i++) // { // for(int j = 1; j <= k[i]; j++) // { // // } // } //} int main () { scanf("%d%d", &n, &m); int subt = 1; for(int i = 1; i <= m; i++) { scanf("%d", &k[i]); if(k[i] != 2) subt = 0; for(int j = 1; j <= k[i]; j++) { scanf("%d", &in); wire[i].push_back(in); } } // if(subt) // { // solsub(); // return 0; // } dfs(1); printf("%d\n", ans); return 0; }