開始对点搜索,直接写乱了。想了想对边搜索,尽管复杂度高。剪枝一下水过去了。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector> using namespace std; struct Edge{
int a,b;
}G[35]; int n,m,deg[10],on[10],off[10];
int res; void init(){
memset(deg,0,sizeof(deg));
res = 0;
} void dfs(int u){
//printf("%d\n",u);
if(u == m){
res++;
return;
}
int a,b;
a = G[u].a;b = G[u].b;
deg[a]--;deg[b]--; on[a]++;on[b]++;
if((deg[a] && deg[b]) ||
(!deg[a] && deg[b] && on[a] == off[a]) ||
(!deg[b] && deg[a] && on[b] == off[b]) ||
(!deg[a] && !deg[b] && on[a] == off[a] && on[b] == off[b]))
dfs(u+1);
on[a]--;on[b]--; off[a]++;off[b]++;
if((deg[a] && deg[b]) ||
(!deg[a] && deg[b] && on[a] == off[a]) ||
(!deg[b] && deg[a] && on[b] == off[b]) ||
(!deg[a] && !deg[b] && on[a] == off[a] && on[b] == off[b]))
dfs(u+1);
off[a]--;off[b]--;
deg[a]++;deg[b]++;
} int main(){
int cas; scanf("%d",&cas);
while(cas--){
scanf("%d%d",&n,&m);
init();
for(int i=0;i<m;i++){
scanf("%d%d",&G[i].a,&G[i].b);
deg[G[i].a]++;deg[G[i].b]++;
}
dfs(0);
printf("%d\n",res);
}
return 0;
}

HDU 5305 Friends (搜索+剪枝) 2015多校联合第二场的更多相关文章

  1. hdu 5288||2015多校联合第一场1001题

    pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...

  2. 2015 多校赛 第二场 1006 (hdu 5305)

    Problem Description There are n people and m pairs of friends. For every pair of friends, they can c ...

  3. 2015 多校赛 第二场 1004 hdu(5303)

    Problem Description There are n apple trees planted along a cyclic road, which is L metres long. You ...

  4. 2015 多校赛 第二场 1002 (hdu 5301)

    Description Your current task is to make a ground plan for a residential building located in HZXJHS. ...

  5. hdu5294||2015多校联合第一场1007 最短路+最大流

    http://acm.hdu.edu.cn/showproblem.php? pid=5294 Problem Description Innocent Wu follows Dumb Zhang i ...

  6. 2015多校训练第二场 hdu5305

    把这题想复杂了,一直在考虑怎么快速的判断将选的边和已选的边无冲突,后来经人提醒发现这根本没必要,反正数据也不大开两个数组爆搜就OK了,搜索之前要先排除两种没必要搜的情况,这很容易想到,爆搜的时候注意几 ...

  7. HDU 5745 La Vie en rose (DP||模拟) 2016杭电多校联合第二场

    题目:传送门. 这是一道阅读理解题,正解是DP,实际上模拟就能做.pij+1 指的是 (pij)+1不是 pi(j+1),判断能否交换输出即可. #include <iostream> # ...

  8. HDU 5744 Keep On Movin (贪心) 2016杭电多校联合第二场

    题目:传送门. 如果每个字符出现次数都是偶数, 那么答案显然就是所有数的和. 对于奇数部分, 显然需要把其他字符均匀分配给这写奇数字符. 随便计算下就好了. #include <iostream ...

  9. HDU 5742 It's All In The Mind (贪心) 2016杭电多校联合第二场

    题目:传送门. 题意:求题目中的公式的最大值,且满足题目中的三个条件. 题解:前两个数越大越好. #include <iostream> #include <algorithm> ...

随机推荐

  1. Mybatis分页插件2.0版本号公布

    项目地址:http://git.oschina.net/free/Mybatis_PageHelper 软件介绍:http://www.oschina.net/p/mybatis_pagehelper ...

  2. swift-判断是否已获得相机、相册权限

    // 相机权限 func isRightCamera() -> Bool { let authStatus = AVCaptureDevice.authorizationStatus(forMe ...

  3. 超高性能管线式HTTP请求(实践·原理·实现)

    超高性能管线式HTTP请求(实践·原理·实现) 一.总结 一句话总结:实际pipe早就被http1.1所支持,并且大部分nginx服务器也支持并开启了这一功能. pipe之所以能比常规请求方式性能高出 ...

  4. java中字符串编码转换

    Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码 ...

  5. Java中的作用域有哪些

    在Java语言中,变量的类型主要有3种:成员变量.静态变量和局部变量 首先说静态变量跟局部变量 静态变量不依赖于特定的实例,而是被所有实例共享,也就是说,只要一个类被加载,JVM就会给类的静态变量分配 ...

  6. POJ 3150 循环矩阵的应用

    思路: 首先 先普及一个性质: 循环矩阵*循环矩阵=循环矩阵 由于此题是距离小于d的都加上一个数. 那么 构造矩阵的时候 我们发现 诶呦 这是个循环矩阵 看看数据范围 n^2log(k)可以过. 那就 ...

  7. 利用keytool颁发https证书方法

    1.首先生成私有认证机构 命令:keytool -genkeypair -alias CAname   补充:keytool -list 命令增加 -v 可以查看CA详细信息 2.然后生成私有证书 命 ...

  8. Android的Activity的小知识点

    1.android的四种启动模式分别是:standard,singleTop,SingleTask,singleInstance. 我们可以在AndroidMainfest.xml中通过Activit ...

  9. 新物理AI将可能成为量子计算革命的关键

    新物理AI将可能成为量子计算革命的关键 据外媒报道,量子计算无疑是现在最令人兴奋的技术之一,但它的量子物理基础却让它成为了一个令人讨厌的概念理解甚至很难再展开其他事情.然而,最近物理学研究的一项突破可 ...

  10. day15 函数对象以及作用域

    目录 函数对象 函数对象的四大功能 函数的嵌套 名称空间和作用域 名称空间 考试必考 作用域 global nonlacal LEGB原则 函数对象 ==Python中一切皆对象== 函数名也可以看成 ...