当前位置:网站首页>P2622 关灯问题II(状态压缩 搜索)
P2622 关灯问题II(状态压缩 搜索)
2022-07-03 07:54:00 【eva_can(not)survive】
关灯问题II - 洛谷https://www.luogu.com.cn/problem/P2622状态压缩的一个学习案例,一道很经典的题目。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
#define lowbit(x) ((x)&(-x))
using P = pair<int, int>;
int n, m;
int a[1005][1005];
bool vis[MAXN];
void bfs() {
queue<P> que;
int s = (1 << n) - 1;
vis[s] = true;
que.push(P(s, 0));
while (!que.empty()) {
P t = que.front();
que.pop();
if (t.first == 0)
return void(printf("%d", t.second));
for (int i = 1; i <= m; i++) {
int tmp = t.first;
for (int j = 1; j <= n; j++) {
if (a[i][j] == 1 && (1 << (j - 1)&tmp))
tmp ^= 1 << (j - 1);
else if (a[i][j] == -1 && !(1 << (j - 1)&tmp))
tmp |= 1 << (j - 1);
}
if (!vis[tmp]){
que.push(P(tmp, t.second + 1));
vis[tmp]=1;
}
}
}
printf("-1\n");
}
int main() {
int t;
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
scanf("%d", &a[i][j]);
}
}
bfs();
return 0;
}边栏推荐
- 使用 FileChannel 进行文件的复制拷贝
- 输入三次猜一个数字
- PAT甲级 1032 Sharing
- LwIP learning socket (application)
- What is definition? What is a statement? What is the difference between them?
- Go language foundation ----- 13 ----- file
- [at] abc 258G - Triangle 三元组可达-暴力
- PHP微信抢红包的算法
- Ventuz Foundation Series "one step at the door"
- Go language foundation ----- 08 ----- interface
猜你喜欢

Go language foundation ----- 08 ----- interface

WPF:解决MaterialDesign:DialogHost 无法关闭问题

Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework

Oracle queries grouped by time

Pat class a 1032 sharing

Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does

一个实习生的CnosDB之旅

Docker installs MySQL and successfully uses Navicat connection

oracle 插入单引号

Go language foundation ----- 15 ----- reflection
随机推荐
Go language foundation ----- 06 ----- anonymous fields, fields with the same name
Go language - loop statement
Register keyword
创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03
【cocos creator】获取资源uuid
Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework
使用 FileChannel 进行文件的复制拷贝
PAT甲级 1029 Median
tp3.2和tp5.0的区别
多旅行商问题——公式和求解过程概述
Docker installs MySQL and successfully uses Navicat connection
璞华PLM为全场景产品生命周期管理赋能,助力产品主线的企业数字化转型
The difference between hdmi2.1 and hdmi2.0 and the conversion of PD signals.
*p++、*++p、++*p、(*p)++
Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does
Redis batch startup and shutdown script
Pat grade a 1027 colors in Mars
[cocos creator] get the resource UUID
LwIP learning socket (API)
Huawei switch: configure Telnet, SSH and web access