Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int n;
  6. int dp[1 << 14][14], g[14][14], par[1 << 14][14][2];
  7. int INF = 1e9 + 7;
  8.  
  9. int main () {
  10. cin >> n;
  11. for (int i = 0; i < n; ++i) {
  12. for (int j = 0; j < n; ++j) {
  13. cin >> g[i][j];
  14. }
  15. }
  16. for (int mask = 0; mask < (1 << n); ++mask) {
  17. for (int j = 0; j < n; ++j) {
  18. dp[mask][j] = INF;
  19. }
  20. }
  21. for (int i = 0; i < n; ++i) {
  22. dp[(1 << i)][i] = 0;
  23. }
  24. for (int mask = 0; mask < (1 << n); ++mask) {
  25. for (int last = 0; last < n; ++last) {
  26. if ((mask & (1 << last))) {
  27. for (int cur = 0; cur < n; ++cur) {
  28. if (!(mask & (1 << cur))) {
  29. if (dp[mask][last] + g[last][cur] < dp[mask | (1 << cur)][cur]) {
  30. dp[mask | (1 << cur)][cur] = dp[mask][last] + g[last][cur];
  31. par[mask | (1 << cur)][cur][0] = mask;
  32. par[mask | (1 << cur)][cur][1] = last;
  33. }
  34. }
  35. }
  36. }
  37. }
  38. }
  39. /*
  40. for (int mask = 0; mask <= (1 << n) - 1; ++mask) {
  41. for (int last = 0; last < n; ++last) {
  42. cout << mask << " "<< last << " " << dp[mask][last]<<endl;
  43. }
  44. }
  45. */
  46. cout << dp[1][0]<<endl;
  47. int ans = 0;
  48. for (int i = 1; i < n; ++i) {
  49. if (dp[(1 << n) - 1][i] < dp[(1 << n) - 1][ans]) {
  50. ans = i;
  51. }
  52. }
  53. cout << dp[(1 << n) - 1][ans];
  54.  
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement