提交时间:2022-07-19 12:58:04

运行 ID: 52547

#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=0;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^ss]=max(f[i][s^ss],f[i-1][s]+1); } } ans=max(ans,f[i][s]); } } printf("%d",ans); }