题目传送门

 /*
题意:每个点都要有偶数条边,且边染色成相同的两部分,问能有多少种染色方法
DFS+剪枝:按照边数来DFS,每种染色数为该点入度的一半,还有如果点不是偶数边就不DFS
这是别人的DFS,写的精简强大,膜拜之。。。
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std; const int MAXN = ;
const int INF = 0x3f3f3f3f;
int d[MAXN], c1[MAXN], c2[MAXN];
int a[MAXN], b[MAXN];
int n, m, ans; void DFS(int k) {
if (k == m + ) {
ans++; return ;
}
int u = a[k], v = b[k];
if (c1[u] < d[u] && c1[v] < d[v]) {
c1[u]++; c1[v]++;
DFS (k + );
c1[u]--; c1[v]--;
}
if (c2[u] < d[u] && c2[v] < d[v]) {
c2[u]++; c2[v]++;
DFS (k + );
c2[u]--; c2[v]--;
}
} int main(void) { //HDOJ 5305 Friends
//freopen ("F.in", "r", stdin); int t; scanf ("%d", &t);
while (t--) {
memset (d, , sizeof (d));
scanf ("%d%d", &n, &m);
for (int i=; i<=m; ++i) {
scanf ("%d%d", &a[i], &b[i]);
d[a[i]]++; d[b[i]]++;
} bool flag = true;
for (int i=; i<=n; ++i) {
if (d[i] & ) {
flag = false; break;
}
d[i] /= ;
} if (!flag) {
puts (""); continue;
}
memset (c1, , sizeof (c1));
memset (c2, , sizeof (c2));
ans = ; DFS ();
printf ("%d\n", ans);
} return ;
}

DFS HDU 5305 Friends的更多相关文章

  1. HDU 5305 Friends dfs

    Friends 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5305 Description There are n people and m pa ...

  2. HDU 5305 Friends (DFS,穷举+剪枝)

    题意: 给定n个人,m对朋友关系,如果对于每个人,只能刚好选择其所有朋友中的一半的人进行聊天(只是我和我的朋友,不是我的朋友和我的朋友),那么有多少种情况?只要一个选择不同,视为不同情况. 思路: 比 ...

  3. HDU 5305 Friends(简单DFS)

    Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  4. HDU 5305 Friends(dfs)

    Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  5. 【HDU 5305】Friends 多校第二场(双向DFS)

    依据题意的话最多32条边,直接暴力的话 2 ^ 32肯定超时了.我们能够分两次搜索时间复杂度降低为 2 * 2  ^ 16 唯一须要注意的就是对眼下状态的哈希处理. 我採用的是 十进制表示法 跑的还是 ...

  6. hdu 5305 Friends(2015多校第二场第6题)记忆化搜索

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5305 题意:给你n个人,m条关系,关系可以是online也可以是offline,让你求在保证所有人on ...

  7. DFS hdu 1016

    http://acm.hdu.edu.cn/showproblem.php?pid=1016 #include <iostream> using namespace std; int a[ ...

  8. 变形课(DFS hdu 1181)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  9. hdu 5305 friends

    每一次比赛的时候脑子都卡顿, 这次更离谱,我居然二进制枚举边,这么大的复杂度.而且剪不了枝 后来学长说着是道爆搜.搜每一条边.恍然大悟. 仅仅须要剪掉点的度数是奇数的时候,或者他的线上朋友或线下朋友大 ...

随机推荐

  1. 2018/2/16 解析Logback的AppenderBase源码,并举一反三的实现Logback扩展功能的思路,以及它的实际业务应用场景

    在学习Logback的过程中,知道了它有一个可以将日志往第三方数据源写的功能,这个功能的实现就是这个AppenderBase类,不禁想看看它的源码. 下面是AppenderBase类的所有子类(也就是 ...

  2. 【ZJOI2017 Round1练习】D7T1 graph(提答)

    题意: n<=1000 m<=10000 思路:

  3. python之模块随笔记-os

    操作系统模块:import os os.remove() 删除文件 os.unlink() 删除链接文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.c ...

  4. Spring实战读书笔记

    Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...

  5. cogs——555. 网络探测

    555. 网络探测 ★☆   输入文件:ping.in   输出文件:ping.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]    当出现网络故障时,我们经常使用“p ...

  6. Eclipse-Java代码规范和质量检查插件-PMD

    PMD是一个源代码分析器. 它发现常见的编程缺陷,如未使用的变量.空catch块.不必要的对象创建等等. 它支持Java.JavaScript.Salesforce.com Apex.PLSQL.Ap ...

  7. iframe显示滚动条

    子页面通过iframe加载,出现了竖向滚动条 最后查出原因:文档申明 iframe有滚动条的页面的文档申明 <!DOCTYPE html> 改成如下就行了 <!DOCTYPE HTM ...

  8. iOS音频播放 (二):AudioSession 转

    原文出处 :http://msching.github.io/blog/2014/07/08/audio-in-ios-2/ 前言 本篇为<iOS音频播放>系列的第二篇. 在实施前一篇中所 ...

  9. ios打包静态库

    1. 什么是库? 所谓库就是程序代码的集合,是共享程序代码的一种方式. 2. 库的分类 根据程序代码的开源情况,库可以分为两类 开源库源代码是公开的,你可以看到具体实现.比如GitHub上比较出名的第 ...

  10. Cookies 初识 Dotnetspider EF 6.x、EF Core实现dynamic动态查询和EF Core注入多个上下文实例池你知道有什么问题? EntityFramework Core 运行dotnet ef命令迁移背后本质是什么?(EF Core迁移原理)

    Cookies   1.创建HttpCookies Cookie=new HttpCookies("CookieName");2.添加内容Cookie.Values.Add(&qu ...