Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#define FOR(i,A,s) for(int i=A[s];i!=s;i=A[i])using namespace std;const int maxnode=3024;const int maxm=400;struct DLX{int n,sz;int S[maxm];int L[maxnode],R[maxnode],U[maxnode],D[maxnode];int row[maxnode],col[maxnode];int ansd,ans[maxm*2];void init(int n){for(int i=0;i<=n;i++){U[i]=i;D[i]=i;L[i]=i-1;R[i]=i+1;}R[n]=0;L[0]=n;sz=n+1;memset(S,0,sizeof(S));}void AddRow(int r,vector<int> clms){