标签:abs sizeof determine add pair absolute scan panel ane
2 3 3 1 2 2 3 3 1 4 4 1 2 2 3 3 4 4 1
0 2
#include <cstdio>
#include <cstring>
bool mp[10][10];
int deg[10], c1[10], c2[10];
int n, m, cnt, ans;
struct EDGE
{
    int u, v;
}e[100000];
void DFS(int cur)
{
    if(cur == m + 1)
    {
        ans ++;
        return;
    }
    int v = e[cur].v;
    int u = e[cur].u;
    if(c1[u] && c1[v])
    {
        c1[u] --;
        c1[v] --;
        DFS(cur + 1);
        c1[u] ++;
        c1[v] ++;
    }
    if(c2[u] && c2[v])
    {
        c2[u] --;
        c2[v] --;
        DFS(cur + 1);
        c2[u] ++;
        c2[v] ++;
    }
    return;
}
int main()
{
    int T;
    scanf("%d", &T);
    while(T --)
    {
        cnt = 0;
        ans = 0;
        memset(deg, 0, sizeof(deg));
        memset(e, 0, sizeof(e));
        memset(c1, 0, sizeof(c1));
        memset(c2, 0, sizeof(c2));
        scanf("%d %d", &n, &m);
        for(int i = 1; i <= m; i++)
        {
            scanf("%d %d", &e[i].u, &e[i].v);
            deg[e[i].u] ++;
            deg[e[i].v] ++;
        }
        bool f = false;
        for(int i = 1; i <= n; i++)
        {
            c1[i] = c2[i] = deg[i] / 2;
            if(deg[i] & 1)
            {
                f = true;
                break;
            }
        }
        if(f)
        {
            printf("0\n");
            continue;
        }
        DFS(1);
        printf("%d\n", ans);
    }
}标签:abs sizeof determine add pair absolute scan panel ane
原文地址:http://www.cnblogs.com/wzjhoutai/p/7225513.html