HDU 5305 Friends(2015 Multi-University Training Contest 2)
来源:互联网 发布:用户登录sql注入 编辑:程序博客网 时间:2024/06/06 00:06
Friends
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1946 Accepted Submission(s): 975
Problem Description
There are n people and m pairs of friends. For every pair of friends, they can choose to become online friends (communicating using online applications) or offline friends (mostly using face-to-face communication). However, everyone in these n people wants to have the same number of online and offline friends (i.e. If one person has x onine friends, he or she must have x offline friends too, but different people can have different number of online or offline friends). Please determine how many ways there are to satisfy their requirements.
Input
The first line of the input is a single integer T (T=100) , indicating the number of testcases.
For each testcase, the first line contains two integersn (1≤n≤8) and m (0≤m≤n(n−1)2) , indicating the number of people and the number of pairs of friends, respectively. Each of the next m lines contains two numbers x and y , which mean x and y are friends. It is guaranteed that x≠y and every friend relationship will appear at most once.
For each testcase, the first line contains two integers
Output
For each testcase, print one number indicating the answer.
Sample Input
23 31 22 33 14 41 22 33 44 1
Sample Output
02
Author
XJZX
Source
2015 Multi-University Training Contest 2
题目大意:
有 n
个人,m对
朋友关系,朋友之间可以选择成为 在线朋友 或者 离线朋友,每个人都想有相同数目的 在线朋友 和 离线朋友。(比如一个人有 x 个在线朋友,那么他必须有 x 个离线朋友)但是不同的人 x 可以不同。求有多少种方案可以满足他们的要求。
样例解释
2
两个测试用例3 3
三个人,三对朋友关系1 2
1 2 是朋友,他们可以选择成为离线或者在线朋友2 3
2 3 是朋友,他们可以选择成为离线或者在线朋友3 1
3 4 是朋友,他们可以选择成为离线或者在线朋友4 4
同理1 2
2 3
3 4
4 1
解题思路
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxm=100;int x[maxm];int y[maxm];int n,m;int ans;int vis1[maxm];int vis2[maxm];int sum[maxm];void dfs(int pos){ if(pos==m+1) { int ok=1; for(int i=1; i<=n; i++) { if(vis1[i]!=vis2[i]) { ok=0; break; } } if(ok) { ans++; return; } } if(vis1[x[pos]]<(sum[x[pos]]>>1)&&vis1[y[pos]]<(sum[y[pos]]>>1)) { vis1[x[pos]]++; vis1[y[pos]]++; dfs(pos+1); vis1[x[pos]]--; vis1[y[pos]]--; } if(vis2[x[pos]]<(sum[x[pos]]>>1)&&vis2[y[pos]]<(sum[y[pos]]>>1)) { vis2[x[pos]]++; vis2[y[pos]]++; dfs(pos+1); vis2[x[pos]]--; vis2[y[pos]]--; }}int main(){ int t; scanf("%d",&t); while(t--) { memset(sum,0,sizeof(sum)); memset(vis1,0,sizeof(vis1)); memset(vis2,0,sizeof(vis2)); scanf("%d%d",&n,&m); for(int i=1; i<=m; i++) { scanf("%d%d",&x[i],&y[i]); sum[x[i]]++; sum[y[i]]++; } int ok=1; for(int i=1; i<=n; i++) { if(sum[i]%2) { ok=0; printf("0\n"); break; } } if(ok) { ans=0; dfs(1); printf("%d\n",ans); } } return 0;}
0 0
- HDU 5305 Friends(2015 Multi-University Training Contest 2)
- Hdu 5305 Friends 2015 Multi-University Training Contest 2
- HDU 5305 Friends 2015 Multi-University Training Contest 2 1006
- hdu 5305 Friends 2015 Multi-University Training Contest 2
- 2015 Multi-University Training Contest 2 1006 Friends 壮压
- 2015 Multi-University Training Contest 2 1006 Friends
- Hdu 5308 I Wanna Become A 24-Point Master Hdu 5305 Friends 2015 Multi-University Training Contest 2
- HDU 5235 Friends (2015 Multi-University Training Contest 2 搜索+剪枝)
- 2015多校联合训练赛 hdu 5305 Friends 2015 Multi-University Training Contest 2 枚举+剪枝
- hdu 5301 Buildings 2015 Multi-University Training Contest 2
- Hdu 5301 Buildings 2015 Multi-University Training Contest 2
- hdu 5301Buildings 2015 Multi-University Training Contest 2
- hdu 5303 Delicious Apples(2015 Multi-University Training Contest 2)
- hdu 5301 Buildings 2015 Buildings Multi-University Training Contest 2
- Hdu 5303 Delicious Apples 2015 Multi-University Training Contest 2
- hdu 5301 Buildings 2015 Multi-University Training Contest 2
- hdu 5303 Delicious Apples 2015 Multi-University Training Contest 2
- HDU 5289 Assignment (2015 Multi-University Training Contest 1)
- 欢迎使用CSDN-markdown编辑器
- 【BZOJ3260】跳【组合数】
- Java国际化与spring框架国际化的处理
- node.js发送邮件email
- POJ1154(DFS回溯)
- HDU 5305 Friends(2015 Multi-University Training Contest 2)
- nyoj108 士兵杀敌(一) (线段树)
- mmap--最简单的测试程序(用户空间与内核空间数据交换&&用户态和内核态的数据交换用例)
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- bigfile表空间 smallfile表空间
- SCU 1118-上车人数(递推)
- ubuntu 下通过apt-get 安装jdk
- JavaScript 正则表达式
- pip用法