From 24296354e8ed9c94369d92e31cab36743ccc0479 Mon Sep 17 00:00:00 2001 From: Kirito <1362050620@qq.com> Date: Sat, 5 Nov 2016 17:30:45 +0800 Subject: [PATCH] Create 5952.cpp --- HDOJ/5952.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 HDOJ/5952.cpp diff --git a/HDOJ/5952.cpp b/HDOJ/5952.cpp new file mode 100644 index 0000000..f1a111f --- /dev/null +++ b/HDOJ/5952.cpp @@ -0,0 +1,95 @@ +#include +#include +#include +#include +using namespace std; + +#define MAXN 105 +#define MAXM 2050 + +int G[MAXN][MAXN];/// G: map +int pec[MAXN];/// pec: Point Edge Counter +int ec;/// ec: Edge Counter + +int vec[MAXN]; +int lec;/// lec: Loop Edge Counter +int ans;/// ans: Answer Counter + +int _global_s; /// Global S + +struct _edge +{ + int target_point; + int last_edge_id; +}edge[MAXM]; + + +void dfs(int EdgeStartPoint) +{ + if(lec==_global_s) + { + ++ans; + return; + } + + for(int i=pec[EdgeStartPoint];i!=-1;i=edge[i].last_edge_id) + { + int v=edge[i].target_point; + int flag=1; + + for(int j=1;j<=lec;j++) + { + if(!G[v][vec[j]]) + { + flag=0;break; + } + } + + if(flag) + { + lec++; + vec[lec]=v; + dfs(v); + lec--; + } + } +} + +int main() +{ + int t; + scanf("%d",&t); + while(t--) + { + /// init + memset(pec,-1,sizeof(pec)); + memset(G,0,sizeof(G)); + ec=0; + + /// Input + int N,M,S; + scanf("%d %d %d",&N,&M,&S); + _global_s=S; + for(int i=0;i