Advertisement
Guest User

Long Long Catfish

a guest
Jan 9th, 2015
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const long long INFLL = 1000000000000000000ll;
  6. int N;
  7. long long DP[1100000][25], X[25], Y[25];
  8.  
  9. int main()
  10. {
  11.     cin >> N;
  12.     for(int i = 0; i < N; i++) cin >> X[i] >> Y[i];
  13.  
  14.     for(int m = 1; m < (1<<N); m++) for(int i = 0; i < N; i++) DP[m][i] = INFLL;
  15.     for(int i = 0; i < N; i++) DP[1<<i][i] = 0;
  16.  
  17.     for(int m = 1; m < (1<<N); m++)
  18.         for(int i = 0; i < N; i++)
  19.             for(int b = 0; b < N; b++)
  20.                 if(!(m&(1<<b)))
  21.                     DP[m+(1<<b)][b] = min(DP[m+(1<<b)][b], abs(X[b]-X[i]) + abs(Y[b]-Y[i]) + DP[m][i]);
  22.  
  23.     long long ans = INFLL;
  24.     for(int i = 0; i < N; i++) ans = min(ans, DP[(1<<N)-1][i]);
  25.     cout << ans << "\n";
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement