Morass

TSP

Mar 4th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.43 KB | None | 0 0
  1. int dp[1<<17][16],N,g[16][16];
  2. int TSP(void){
  3.     int p,a(INF);
  4.     CL(dp,-1);
  5.     dp[1][0]=0;
  6.     F(1<<N)FF(N)if(~dp[i][j])FT(1,N)
  7.         if(!(i&(1<<k))){
  8.             p=(i|(1<<k));
  9.             if(!~dp[p][k])dp[p][k]=dp[i][j]+g[j][k];
  10.             dp[p][k]=min(dp[p][k],dp[i][j]+g[j][k]);
  11.         }
  12.     for(int i(1);i<N;++i)
  13.         if(~dp[(1<<N)-1][i])
  14.             a=min(a,dp[(1<<N)-1][i]+g[i][0]);
  15.     return a==INF?0:a;
  16. }
Advertisement
Add Comment
Please, Sign In to add comment