标签:
#include <iostream> #include <algorithm> #include <queue> #include <vector> #include <cstdio> #include <cstring> using namespace std; int n,m,cnt,ans; int c1[10],c2[10],d[10]; struct Node { int u,v; }node[200]; void dfs(int i) { if(i-1==m) { ans++; return ; } if(c1[node[i].u]&&c1[node[i].v]) { c1[node[i].u]--; c1[node[i].v]--; dfs(i+1); c1[node[i].u]++; c1[node[i].v]++; } if(c2[node[i].u]&&c2[node[i].v]) { c2[node[i].u]--; c2[node[i].v]--; dfs(i+1); c2[node[i].u]++; c2[node[i].v]++; } } int main() { int T; cin>>T; while(T--) { cnt=0; ans=0; scanf("%d%d",&n,&m); memset(node,0,sizeof(node)); memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); memset(d,0,sizeof(d)); for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); node[++cnt].u=u; node[cnt].v=v; d[u]++; d[v]++; } int flag=0; for(int i=1;i<=n;i++) { c1[i]=c2[i]=d[i]/2; if(d[i]&1) { flag=1; break; } } if(flag) { puts("0"); continue; } dfs(1); printf("%d\n",ans); } return 0; }
标签:
原文地址:http://www.cnblogs.com/chen9510/p/5813781.html