不过我认为用启发式搜索应该是可以更加直接有效的过这题。
有时间再试试启发式。
#include#include #include using namespace std; const int maxn=10,maxm=2e4+9; int a[maxn][maxn]; int n,m; struct { int hash[maxm],lon; struct { int key,dist,next; }data[maxm]; void clear() { memset(hash,-1,sizeof(hash)); lon=0; } void push(int key,int dist) { // prin(key); int tmp=key%maxm; for(int k=hash[tmp];k!=-1;k=data[k].next) if(data[k].key==key) { data[k].dist=min(data[k].dist,dist); return ; } data[++lon].dist=dist; data[lon].key=key; data[lon].next=hash[tmp]; hash[tmp]=lon; } }dp[2]; inline int getbit(int key,int t) { key=key&(3< >t*2; return key; } inline int movbit(int key,int j) { key=key<
