二进制是好文明
谁敢反对二进制我就打爆谁的苟头
状态压缩真是太神奇辣
将得病的状态转换成二进制存储起来
初始时病全得
通过药剂
进行BFS
达到健康状态
其实一开始还纠结了一下
到底是记种类还是记数目
但是果然还是记数目啦
记种类根本不可做嘛
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<climits>
#include<string>
#include<cstdlib>
#include<ctime>
#define LL long long
#define MOD 1000000007
#define pi 3.141592653589
using namespace std;
int n,m,i,j,med,ill[105],cure[105],s,h,t,f[1050],ans[1050],num[1050],p;
int main()
{
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&med);
ill[i]<<=1;
cure[i]<<=1;
if(med==1) cure[i]++;
if(med==-1) ill[i]++;
}
cure[i]=(~cure[i]);
}
s=(1<<n)-1;
h=1;
t=1;
f[s]=1;
ans[h]=0;
num[h]=s;
while(h<=t)
{
if(num[h]==0)
{
printf("%d",ans[h]);
return 0;
}
for(i=1;i<=m;i++)
{
p=(num[h]&cure[i]);
p=(p|ill[i]);
if(!f[p])
{
t++;
ans[t]=ans[h]+1;
f[p]=1;
num[t]=p;
}
}
h++;
}
printf("The patient will be dead.");
return 0;
}