题目链接:
思路:典型的状压dp题,dp[s][v]表示到达剩下的车票集合为S并且现在在城市v的状态所需要的最小的花费。
1 #include2 #include 3 #include 4 #include 5 using namespace std; 6 #define inf 1<<30 7 8 int n,m,p,a,b; 9 int t[11];10 int map[44][44];11 double dp[1<<11][44];//到达剩下的车票集合为S,并且现在在城市v的状态所需要的最小的花费12 13 int main()14 {15 int u,v,w;16 while(~scanf("%d%d%d%d%d",&n,&m,&p,&a,&b)){17 if(n==0&&m==0&&p==0&&a==0&&b==0)break;18 for(int i=0;i =0;state--){33 ans=min(ans,dp[state][b-1]);34 for(int u=0;u >i)&1){37 for(int v=0;v