提交时间:2022-07-19 12:45:22

运行 ID: 52541

#include <bits/stdc++.h> #define ll long long using namespace std; int n,m; vector<int> vec[10]; int cnt[1<<16]; int f[10][1<<16]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int k;scanf("%d",&k); for(int j=1;j<=k;j++){ int a;a--;scanf("%d",&a); vec[i].push_back(a); } } int u=(1<<n)-1;memset(f,0xc0,sizeof f); f[0][0]=1; int ans=0; for(int i=1;i<=m;i++){ for(int s=1;s<=u;s++){ for(int j=0;j<vec[i].size();j++){ for(int k=j+1;k<vec[i].size();k++){ int a=vec[i][j],b=vec[i][k]; if(!((1<<a)&s)||!((1<<b)&s)) continue; int ss=(1<<a)|(1<<b); f[i][s]=max(f[i][s],f[i-1][s^ss]+1); } } ans=max(ans,f[i][s]); } } printf("%d",ans); }