Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52314 | UhhhQQQU | 子网 | C++ | 运行超时 | 20 | 1000 MS | 1384 KB | 715 | 2022-07-19 11:52:19 |
#include<cstdio> #include<algorithm> using namespace std; const int N=8e3+10; int n,m; int k[4410],c[4410][41]; bool used[8010]; int ans; void dfs(int u,int sum,int lst) { if(sum+(m-sum+1)<=ans) return ; if(u==m+1||!lst) { ans=max(ans,sum); return ; } int x,y; for(int i=1;i<=k[u];i++) for(int j=i+1;j<=k[u];j++) { x=c[u][i],y=c[u][j]; if(!used[x]&&!used[y]) { used[x]=used[y]=1; dfs(u+1,sum+1,lst-2); used[x]=used[y]=0; } } dfs(u+1,sum,lst); } int main() { scanf("%d %d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d",&k[i]); for(int j=1;j<=k[i];j++) scanf("%d",&c[i][j]); } dfs(1,0,n); printf("%d\n",ans); return 0; }