题目大意:给你一个无向连通图(n<=30),点分为高点和低点,高点数量<=15,如果两个高点和低点都直接连边,那么我们称这三个点形成一个valley,每个点最多作为一个valley的组成部分,求valley的最大数量

高点状压,然后枚举低点,判断这个低点能否影响答案

注意:上一层的值要全都先赋给这一层,再枚举这一层,否则上一层的某些状态可能还没枚举到就枚举这一层了

(比如上一层可行的状态是0110,这一层新来了1001,我们要先把0110和1001赋给这一层,否则我们在从小到大先枚举0110时,这一层的状态0110以及1001并没有被上一层更新,导致转移出错

 #include <cstdio>
#include <algorithm>
#include <cstring>
#define N 35
using namespace std; int T,n,m,K,cnt;
int d[N][N],up[N],dn[N],use[N];
int f[][(<<)+];
void clr()
{
memset(d,,sizeof(d));
memset(up,,sizeof(up));
memset(dn,,sizeof(dn));
memset(use,,sizeof(use));
memset(f,,sizeof(f));
cnt=;
} int main()
{
//freopen("aa.in","r",stdin);
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&K);
clr();
int x,y;
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
d[x-][y-]=d[y-][x-]=;
}
for(int k=;k<K;k++)
{
scanf("%d",&x);
up[k]=x-;
use[x-]=;
}
for(int i=;i<n;i++) if(!use[i]) dn[++cnt]=i;
for(int k=;k<=cnt;k++) f[k][]=;
for(int k=;k<=cnt;k++)
{
for(int s=;s<(<<K);s++) {f[k][s]=f[k-][s];}
for(int s=;s<(<<K);s++)
for(int i=;i<K;i++)
if(!((<<i)&s)&&d[up[i]][dn[k]])
for(int j=;j<K;j++)
if(i!=j&&!((<<j)&s)&&d[dn[k]][up[j]])
f[k][s|(<<i)|(<<j)] = max(f[k][s|(<<i)|(<<j)],f[k-][s]+);
}
int ans=;
for(int s=;s<(<<K);s++)
ans=max(ans,f[cnt][s]);
printf("%d\n",ans);
}
return ;
}

最新文章

  1. JavaScript------获取url地址中的参数
  2. C#改善程序的50种方法
  3. Linux Swap分区设定
  4. Redirect url 路径简单介绍
  5. VPS -Digital Ocean -初试以及VPN的搭建
  6. Laravel-5.1 ---- 将mews captcha整合到项目中!
  7. mybatis异常:Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}问题分析及解决
  8. AngularJS &#39;Controller As&#39;用法
  9. mac 安装PIL
  10. Exchange之三合一部署
  11. Android学习之Intent传递数据
  12. 使用Pechkin将HTML网页转换为PDF
  13. React之组件通信
  14. R语言进行机器学习方法及实例(一)
  15. 采购,接收数据收集SQL汇总(从订单-&gt;接收-&gt;INVOICE所有数据关联SQL)
  16. Docker 新手入门
  17. Java中的常用集合类型总结
  18. I: Carryon的字符串排序(字典树/map映射)
  19. VB脚本错误,系统找不到制定的文件 。代码:80070002
  20. UNIX高级环境编程(16)文件系统 &lt; 雨后 &gt;

热门文章

  1. Python 纸牌游戏
  2. jQuery点击图片放大显示原图效果
  3. 【hiho一下 第三周】KMP算法
  4. redis_3 持久化
  5. Sereja and Bottles-水题有点坑爹
  6. C# 中使用 Obsolete 标志 代码过期
  7. JavaScript的那些坑之变量提升
  8. DirectX11 学习笔记4 - 一个完整的封装框架
  9. 积跬步,聚小流------java信息生成图片
  10. hdoj--3367--Pseudoforest(伪森林&amp;&amp;最大生成树)