题意:给你N*N的网格,‘.’表示可以走,‘#’表示不能走,m条管道,每条管道有起点和终点坐标,
Bob每次可以走到相邻的网格花费1s,问Bob走完m条管道要花多少时间;Bob在管道内不计算时间
即计算Bob从管道 i 的出口走到管道 j 的入口的时间Dis(e[i],s[j])的最小和,起点可以任意;
思路:看了题解说是状态压缩DP然后深入理解了下。
首先算出d[e[i]][s[j]]的最短距离,不能到达为-1;
dp[i][j] : 表示以 j 为起点状态为 i 的最小值。其中 i 是用十进制表示的二进制,
eg:
dp[5][2]:5的二进制位101,表示以编号2管道为起点(0~m-1),走了0,2号管道的最小值。
#include
#include
#include
#include