题目
dp[S][i]:状态S以i为终点。 dp[S|(1<<(j-1))][j]=dp[S][k]+e[k][j].
结束状态是dp[(1<<n)-1][i]+w[i][1] (枚举哪个点回到1)
因为需要记录从哪一个村庄回到1村庄,所以dp应该二维还要记录这个状态中最后一个到达的村庄是什么。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define m(a,b) memset(a,b,sizeof a)
using namespace std;
const int N=21,INF=0x3f3f3f3f;
int e[N][N],dp[1<<(N-1)][N],A[N],B[N