提交时间:2022-07-19 12:01:20
运行 ID: 52365
#include <bits/stdc++.h> using namespace std; const int N=20; int n,m; int e[N][N]; int ans; int dp[10][32768]; int main() { scanf("%d%d",&n,&m); for(int i=1; i<=m; i++) { scanf("%d",&e[i][0]); for(int j=1; j<=e[i][0]; j++) { scanf("%d",&e[i][j]); } } int s[N]; int x2[N]; x2[0]=1; for(int i=1; i<=15; i++) { x2[i]=x2[i-1]*2; } for(int i=1; i<=m; i++) { for(int j=0; j<32768; j++) { int x=j; for(int t=1; t<=15; t++) { s[t]=x%2; x>>=1; } int k=e[i][0]; for(int t=1; t<=k; t++) { if(!s[t]) for(int p=1; p<t; p++) { if(!s[p]) { dp[i+1][j+x2[e[i][t]]+x2[e[i][p]]]=dp[i][j]+1; } } } } } int ans=0; for(int i=1; i<=m; i++) { for(int j=0; j<32768; j++) { ans=max(ans,dp[i][j]); } } cout<<ans<<endl; return 0; }