DFS HDU 5305 Friends
- /*
- 题意:每个点都要有偶数条边,且边染色成相同的两部分,问能有多少种染色方法
- 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的更多相关文章
- HDU 5305 Friends dfs
Friends 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5305 Description There are n people and m pa ...
- HDU 5305 Friends (DFS,穷举+剪枝)
题意: 给定n个人,m对朋友关系,如果对于每个人,只能刚好选择其所有朋友中的一半的人进行聊天(只是我和我的朋友,不是我的朋友和我的朋友),那么有多少种情况?只要一个选择不同,视为不同情况. 思路: 比 ...
- HDU 5305 Friends(简单DFS)
Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- HDU 5305 Friends(dfs)
Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- 【HDU 5305】Friends 多校第二场(双向DFS)
依据题意的话最多32条边,直接暴力的话 2 ^ 32肯定超时了.我们能够分两次搜索时间复杂度降低为 2 * 2 ^ 16 唯一须要注意的就是对眼下状态的哈希处理. 我採用的是 十进制表示法 跑的还是 ...
- hdu 5305 Friends(2015多校第二场第6题)记忆化搜索
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5305 题意:给你n个人,m条关系,关系可以是online也可以是offline,让你求在保证所有人on ...
- DFS hdu 1016
http://acm.hdu.edu.cn/showproblem.php?pid=1016 #include <iostream> using namespace std; int a[ ...
- 变形课(DFS hdu 1181)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- hdu 5305 friends
每一次比赛的时候脑子都卡顿, 这次更离谱,我居然二进制枚举边,这么大的复杂度.而且剪不了枝 后来学长说着是道爆搜.搜每一条边.恍然大悟. 仅仅须要剪掉点的度数是奇数的时候,或者他的线上朋友或线下朋友大 ...
随机推荐
- Journey CodeForces - 839C
There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can r ...
- Mycat环境搭建教程收集(待实践)
先收集,后续再实践. http://blog.csdn.net/dreamcode/article/details/44307377 http://blog.csdn.net/lanonola/art ...
- Java中如何获取spring中配置的properties文件内容
有2种方式: 一. 1.通过spring配置properties文件 [java] <bean id="propertyConfigurer" class=&qu ...
- swift container server 莫名stuck
openstack swift container server的进程经常莫名其妙进入 D Ds等状态 记录一下这个时候 storage.error的log 便于分析 一种情形是下面这种log Jun ...
- 采用jmeter和泛化测试dubbo服务接口
采用jmeter和泛化测试dubbo服务接口 http://blog.csdn.net/linuu/article/details/54313560
- epoll 的accept , read, write
http://www.ccvita.com/515.html 在一个非阻塞(fcntl)的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就 ...
- UVA 567 Risk【floyd】
题目链接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=508">https://uva ...
- linux下常用快捷方式
一.终端最常用的快捷键: 1.新建终端窗口:crtl+shift+n 2.终端的切换:shift+左右箭头 3.挂起:crtl+s 4.解除挂起:crtl+q 5.清屏:crtl+l 二.命令行光标移 ...
- MySql command line client 命令系列
—————————————————————————————————————————————————————————— 一.启动与退出 1.进入MySQL:启动MySQL Command Line Cl ...
- rsync 3.1.1源代码编译安装配置
http://rsync.samba.org/ rsync-3.1.1.tar.gz ---0.卸载rpm # yum remove rsync -----1.安装: tar -zxvf rsync- ...