Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<cstdio>#include<bitset>#include<cstring>#define MAXN 105using namespace std;int n,m;bitset<MAXN>rolcolList[MAXN];bitset<MAXN>colrolList[MAXN];bitset<MAXN>colremain;bitset<MAXN>rolremain;bool Dfs(int index){//if we have found the answer or there is no rol to choose//return the resultif(colremain.count() == m)return true;else if(rolremain.count() == n)return false;int i,j;bitset<MAXN>recordrol;bitset<MAXN>recordcol;recordcol = colremain;recordrol = rolremain;for(i=index;i<=n;i++){//search for the available rowif(rolremain[i] == 0){for(j=1;j<=m;j++){if(rolcolList[i][j] == 1)rolremain |= colrolList[j];