爆搜dfs
来源:互联网 发布:淘宝首页在线制作 编辑:程序博客网 时间:2024/06/03 09:15
太久没写搜素,这题很有意思.
注意vector效率很低
/* Farewell. */#include <iostream>#include <vector>#include <cstdio>#include <string.h>#include <algorithm>#include <queue>#include <map>#include <string>#include <cmath>#include <bitset>#include <iomanip>#include <set>using namespace std;#define gcd __gcd#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define MP make_pair#define MT make_tuple#define PB push_backtypedef long long LL;typedef unsigned long long ULL;typedef pair<int,int > pii;typedef pair<LL,LL> pll;typedef pair<double,double > pdd;typedef pair<double,int > pdi;const int INF = 0x7fffffff;const LL INFF = 0x7f7f7f7fffffffff;const LL MOD = 2147493647;#define debug(x) std::cerr << #x << " = " << (x) << std::endlconst int MAXM = 5e3+17;const int MAXN = 1e2+17;vector<int > G[MAXN];int mp[MAXN][MAXN];int ans = 0,s;void dfs(int u,int *now,int sz){ if(sz==s) { ans++; return; } for (int i = 0; i < G[u].size(); ++i) { bool can = true; int v = G[u][i]; for (int j = 1; j <= sz; ++j) if(!mp[v][now[j]]) { can = false; break; } if(can) { sz++; now[sz] = v; dfs(v,now,sz); now[sz] = 0; sz--; } }} int main(int argc, char const *argv[]){ #ifdef GoodbyeMonkeyKing freopen("in.txt","r",stdin);freopen("out.txt","w",stdout); #endif int t; cin>>t; while(t--) { int n,m; ans = 0; scanf("%d%d%d",&n,&m,&s); for (int i = 1; i <= n; ++i) G[i].clear(); memset(mp, 0, sizeof(mp)); for (int i = 0; i < m; ++i) { int u,v; scanf("%d%d",&u,&v); if(u>v) swap(u,v); mp[u][v]=mp[v][u] = 1; G[u].push_back(v); } for (int i = 1; i <= n; ++i) { int temp[MAXN]={0}; temp[1] = i; dfs(i,temp,1); } printf("%d\n",ans ); } return 0; }
阅读全文
0 0
- 爆搜dfs
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- dfs
- DFS
- DFS
- DFS
- dfs
- DFS
- dfs
- dfs
- dfs
- 经典排序算法
- bzoj1049 [HAOI2006]数字序列 ( LIS + 区间DP)
- SpringBoot自动配置的实现原理
- 前序 中序 后序遍历
- 项目管理心得:一个项目经理的个人体会、经验总结
- 爆搜dfs
- Scikit-learn安装教程
- 我为什么喜欢跑步
- mybatis 报错 Result Maps collection already contains value for BaseResultMap
- REST接口
- C/C++代码获取今天凌晨零点零时零分的时间戳
- Unity IOS包在IPhone出现闪退
- 已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。 与基础事务管理器的通信失败。 .net 代码里 写事务代码
- 内核模块简介(1)-linux内核体系结构(1)