程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> HDU 5305 Friends(dfs)

HDU 5305 Friends(dfs)

編輯:關於C++

 

Friends

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 297 Accepted Submission(s): 127



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 integers n (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.

Output For each testcase, print one number indicating the answer.
Sample Input
2
3 3
1 2
2 3
3 1
4 4
1 2
2 3
3 4
4 1

Sample Output
0
2

Source

 

 

 

 

 

/*

題意:n個人,m個關系,每個人和別人的關喜有線上和線下,求每個人線上和線下的關系一樣多的方案數
思路: dfs
先貼別人代碼,跑的快
,我的跑的慢

*/


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
using namespace std;

typedef __int64 LL;

#define N 100

int x[N],y[N],in[N],on[N],off[N];
int n,m;
int ans;

bool judge()
{
    if(m&1) return false;
    for(int i=1;i<=n;i++) if(in[i]&1) return false;
    return true;
}

void dfs(int pos)
{
    if(pos==m)
    {
        ans++;
        return ;
    }
    int u=x[pos],v=y[pos];
    if(on[u]

 

 

/*
我的代碼
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define bug printf(hihi
)

#define eps 1e-8
typedef __int64 ll;

using namespace std;

#define INF 0x3f3f3f3f

#define N 1<<8

__int64 ans;

int on[N],down[N];
int n,m,f[N],in[N];

inline int get(int x)
{
    int s=0;
    while(x)
    {
        s++;
        x&=(x-1);
    }
    return s;
}

inline bool judge(int pos,int cur)
{
    int i;
    for(i=0;i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved