Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52260 | HyperSQ | 子网 | C++ | 运行出错 | 5 | 7 MS | 2940 KB | 819 | 2022-07-19 11:51:19 |
#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; for(int i=1;i<=u;i++){ cnt[i]=cnt[i^(-i&i)]+1; } int ans=0; for(int i=1;i<=m;i++){ for(int s=1;s<=u;s++){ if(cnt[s]&1) continue; 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); }