分析
这道题很久之前在学校OJ练习搜索的时候写过,但是洛谷的数据貌似大一点点。
这道题就是一个哈密顿回路,可以用搜索过掉9个点。这次用的状压DP。
因为对于每个村庄,只有走过和没走过两种状态,所以用一个20位二进制数就可以存储所有的状态,刚好在数据范围内。
设 f [ i ] [ j ] f[i][j] f[i][j] 为当前状态为 i i i ,现在在节点 j j j 的最小步数。其实我们只需要 i i i 走到 2 n − 1 2^n-1 2n−1 这个状态就是结束。所以枚举 i , j , k i,j,k i,j,k 其中 k k k 表示从 k k k 点来到 j j j 点的,所以这样就可以确定转移方程: f [ i ] [ j ] = m i n ( f