UVA11795 Mega Man's Mission
2024-08-26 17:44:17
状压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 ;
}
最新文章
- RSA密钥之C#格式与Java格式转换
- lamp 环境搭建
- Android学习十二:自定义控件学习
- FORM触发器执行顺序
- mac下 ssh免密码登陆设置
- java 嵌套类 简记
- 第二个Sprint冲刺第四天
- OpenCV源码阅读(3)---matx.h---学习心得
- swift苹果的下一代语言
- WCF入门及在WinForm中动态调用
- 【UVA】1449-Dominating Patterns(AC自己主动机)
- Android手机之间通过声音传输信息方法——声波通信(含project代码)
- 微信小程序-发送模板消息(C#)
- js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:
- Galaxy2D游戏引擎常见问题解答
- codeforces493B
- angular2 学习
- 【Python】UI自动化-1
- IntelliJ IDEA 编译代码报错 找不到符号 符号: 找不到符号包 包
- js实现字体闪烁
热门文章
- 使用location.href跳转页面在火狐浏览器中报错404
- 新概念英语(1-119)who call out to the thieves in the dark?
- api-gateway实践(01)服务网关 - 原型功能
- requests.post发送字典套字典
- 教你如何用AST语法树对代码“动手脚”
- 字典的update方法
- python如何转换word格式、读取word内容、转成html
- [转]Python多进程并发操作中进程池Pool的应用
- python中的多线程
- Logstic回归采用sigmoid函数的原因