HDU 5952 Counting Cliques -暴力
Posted HITLJR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5952 Counting Cliques -暴力相关的知识,希望对你有一定的参考价值。
现场赛手速三题,这题一直没写。
直接暴力,注意点只有一个!单向建边,从小点到大点。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 struct edge 6 { 7 int to; 8 int next; 9 }E[1011]; 10 int head[111]; 11 bool e[111][111]; 12 int tot; 13 int N,S,M,ans; 14 void addedge(int a,int b) 15 { 16 E[tot].to = a; 17 E[tot].next = head[b]; 18 head[b] = tot++; 19 } 20 int V[20]; 21 int sv = 0; 22 bool check(int t) 23 { 24 for (int i = 1; i<=sv;i++) 25 { 26 if (!e[V[i]][t]) return false; 27 } 28 return true; 29 } 30 void dfs(int u) 31 { 32 if (sv==S) 33 { 34 ans++; 35 return; 36 } 37 for (int i = head[u] ; i!=-1;i = E[i].next) 38 { 39 int v = E[i].to; 40 if (check(v)) 41 { 42 V[++sv] = v; 43 dfs(v); 44 sv--; 45 } 46 } 47 } 48 int main() 49 { 50 int T; 51 cin >> T; 52 while (T--) 53 { 54 cin >> N >> M >>S; 55 memset(head,-1,sizeof(head)); 56 memset(e,false,sizeof(e)); 57 tot = 0; 58 for (int i= 1; i<=M; i++) 59 { 60 int a,b; 61 scanf("%d%d",&a,&b); 62 addedge(min(a,b),max(a,b)); 63 e[a][b] = true; 64 e[b][a] = true; 65 } 66 ans=0; 67 for (int i = 1; i<=N; i++) 68 { 69 sv = 0; 70 V[++sv] = i; 71 dfs(i); 72 } 73 cout <<ans <<endl; 74 } 75 }
以上是关于HDU 5952 Counting Cliques -暴力的主要内容,如果未能解决你的问题,请参考以下文章
HDU 5952 Counting Cliques(dfs)
HDU - 5952 Counting Cliques (dfs)