hdu 5952
来源:互联网 发布:更相减损术算法 编辑:程序博客网 时间:2024/06/16 12:21
题目链接:点击打开链接
题解思路:一开始直接每个枚举T了,后来直接找有连接的居然过了 = =。每次看这个点是否能加入这个团,然后分加入和不加入两种情况dfs就可以了。
代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 1e2+10;int n,m,k,top,ans,tot,head[mx*10];bool edge[mx][mx];int num[mx];struct node{ int y; int nxt; node(){} node(int yy,int nx):y(yy),nxt(nx){}}Edge[mx*20];void AddEdge(int x,int y){ Edge[tot] = node(y,head[x]); head[x] = tot++;}bool check(int x){ for(int i=0;i<top;i++) if(!edge[x][num[i]]) return 0; return 1;}void dfs(int x){ if(top==k) { ans++; return ; } for(int i=head[x];~i;i=Edge[i].nxt){ int son = Edge[i].y; if(!check(son)) continue; num[top++] = son; dfs(son); top--; }}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&m,&k); int a,b; tot = top = ans = 0; memset(edge,0,sizeof(edge)); memset(head,-1,sizeof(head)); for(int i=0;i<m;i++){ scanf("%d%d",&a,&b); edge[a][b] = edge[b][a] = 1; if(a>b) swap(a,b); AddEdge(a,b); } for(int i=1;i<=n;i++){ num[0] = i; top = 1; dfs(i); } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- HDU 5952
- HDU 5952
- 【HDU】5952
- hdu 5952
- HDU 5952 搜索
- HDU 5952 - Counting Cliques
- hdu 5952 Counting Cliques
- HDU 5952 搜索
- hdu 5952 Counting Cliques
- hdu 5952 暴力搜索
- hdu 5952 Counting Cliques
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- 5.7
- 我的第一个程序
- c++中常引用const int &a的介绍
- 数据库设计三大范式
- PHP设计模式---工厂模式
- hdu 5952
- 值传递、指针传递、引用传递的区别
- Mac下安装Mysql
- ASCII Area UVA
- 数据库访问方法简介
- 论文笔记Deeply-Learned Part-Aligned Representations for Person Re-Identification
- 时下最流行的滑块验证,防止机器人恶意刷数据库
- 列表的基本操作
- JVM内存溢出的解决思路