状压dp

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define MAXN 20
#define ll long long
using namespace std;
int n;
vector<int> G[MAXN];
ll f[<<MAXN];
int vis[<<MAXN];
void solve(){
for(int i=;i<MAXN;i++) G[i].clear();
memset(f,,sizeof(f));
memset(vis,,sizeof(vis));
scanf("%d",&n);
for(int i=;i<=n;i++){
char ch[]={};
scanf("%s",ch+);
for(int j=;j<=n;j++){
if(ch[j]-){
G[i].push_back(j);
}
}
}
queue<int> q;
f[(<<n)-]=;
vis[(<<n)-]=;
q.push((<<n)-);
while(!q.empty()){
int S=q.front();q.pop();
int b[MAXN]={};
for(int i=;i<G[].size();i++){
b[G[][i]]=;
}
int t=S,cnt=;
for(int i=;i<n;i++){
if(~(S>>i)&){
for(int j=;j<G[i+].size();j++){
b[G[i+][j]]=;
}
}
}
for(int i=;i<n;i++){
if(((S>>i)&)&&b[i+]){
int dS=S^(<<i);
f[dS]+=f[S];
if(!vis[dS]){
vis[dS]=;
q.push(dS);
}
}
}
}
printf("%lld\n",f[]);
}
int main()
{
// freopen("data.in","r",stdin);
// freopen("my.out","w",stdout);
int T;
scanf("%d",&T);
for(int i=;i<=T;i++){
printf("Case %d: ",i);
solve();
}
return ;
}

最新文章

  1. RSA密钥之C#格式与Java格式转换
  2. lamp 环境搭建
  3. Android学习十二:自定义控件学习
  4. FORM触发器执行顺序
  5. mac下 ssh免密码登陆设置
  6. java 嵌套类 简记
  7. 第二个Sprint冲刺第四天
  8. OpenCV源码阅读(3)---matx.h---学习心得
  9. swift苹果的下一代语言
  10. WCF入门及在WinForm中动态调用
  11. 【UVA】1449-Dominating Patterns(AC自己主动机)
  12. Android手机之间通过声音传输信息方法——声波通信(含project代码)
  13. 微信小程序-发送模板消息(C#)
  14. js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:
  15. Galaxy2D游戏引擎常见问题解答
  16. codeforces493B
  17. angular2 学习
  18. 【Python】UI自动化-1
  19. IntelliJ IDEA 编译代码报错 找不到符号 符号: 找不到符号包 包
  20. js实现字体闪烁

热门文章

  1. 使用location.href跳转页面在火狐浏览器中报错404
  2. 新概念英语(1-119)who call out to the thieves in the dark?
  3. api-gateway实践(01)服务网关 - 原型功能
  4. requests.post发送字典套字典
  5. 教你如何用AST语法树对代码“动手脚”
  6. 字典的update方法
  7. python如何转换word格式、读取word内容、转成html
  8. [转]Python多进程并发操作中进程池Pool的应用
  9. python中的多线程
  10. Logstic回归采用sigmoid函数的原因