跳过正文
  1. Posts/

hdu 5305 Friends (dfs)

·1 分钟

dfs 1A

 1/*************************************************************************
 2	> File Name: code/whust/#9/K.cpp
 3	> Author: 111qqz
 4	> Email: rkz2013@126.com
 5	> Created Time: 2015年08月05日 星期三 15时02分30秒
 6 ************************************************************************/
 7
 8#include<iostream>
 9#include<iomanip>
10#include<cstdio>
11#include<algorithm>
12#include<cmath>
13#include<cstring>
14#include<string>
15#include<map>
16#include<set>
17#include<queue>
18#include<vector>
19#include<stack>
20#define y0 abc111qqz
21#define y1 hust111qqz
22#define yn hez111qqz
23#define j1 cute111qqz
24#define tm crazy111qqz
25#define lr dying111qqz
26using namespace std;
27#define REP(i, n) for (int i=0;i<int(n);++i)
28typedef long long LL;
29typedef unsigned long long ULL;
30const int inf = 0x7fffffff;
31int n ,m,ans;
32int d[50];
33int on[50],off[50];
34int u[50],v[50];
35
36bool ok(int x,int y)
37{
38    if ( !d[x] && !d[y] && on[x] == off[x] && on[y] == off[y] )
39        return true;
40    if ( !d[x] && d[y] && on[x] == off[x] )
41        return true;
42    if ( d[x] && !d[y] && on[y] == off[y] )
43        return true;
44    if ( d[x] && d[y] )
45        return true;
46    return false;
47}
48
49void dfs ( int i)
50{
51    if (i==m)
52    {
53        ans++;
54        return;
55    }
56    int x = u[i];
57    int y = v[i];
58    d[x]--;
59    d[y]--;
60    on[x]++;
61    on[y]++;
62    if (ok(x,y))
63        dfs (i+1);
64    on[x]--;on[y]--;
65    off[y]++;off[x]++;
66    if ( ok( x,y))
67        dfs (i+1);
68    off[y]--;
69    off[x]--;
70    d[x]++;
71    d[y]++;
72}
73
74int main ( )
75{
76    int T;
77    cin>>T;
78    while ( T-- )
79    {
80        ans = 0;
81        scanf ("%d %d",&n,&m);
82        memset (d,0,sizeof(d));
83        memset (on,0,sizeof(on));
84        memset (off,0,sizeof(off));
85        for ( int i = 0 ; i < m ; i++ )
86        {
87            scanf ("%d%d",&u[i],&v[i]);
88            d[u[i]]++;
89            d[v[i]]++;
90        }
91        dfs (0);
92        printf ( "%d\n" , ans );
93    }
94}

相关文章

uva 12442 . Forwarding Emails

·2 分钟
“… so forward this to ten other people, to prove that you believe the emperor has 题意是说发短信,每个人只会给一个人发,问从哪个人开始发,能传到的人最多

hdoj 1241 Oil Deposits (dfs)

·2 分钟
Oil Deposits # **Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17683 Accepted Submission(s): 10172 **

POJ 1564 Sum It Up (DFS+剪枝)

·2 分钟
http://poj.org/problem?id=1564 dfs 三个参数 x,sum,k, x表示开始的坐标,sum表示当前的和,k表示这是一组答案中的第几个数,是用来记录路径的…