题目链接:
思路:类似于poj3311:,首先floyd预处理出两点之间的最短距离,然后就是枚举所有的状态了。


1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 #define MAXN 111 7 #define inf 0x3f3f3f3f 8 9 int map[MAXN][MAXN];10 int dp[1<<17][17];11 int city[17],cost[17],value[17];12 int N,M,H,money;13 14 void floyd()15 {16 for(int k=1;k<=N;k++)17 for(int i=1;i<=N;i++)18 for(int j=1;j<=N;j++)19 if(map[i][k]