dengxinyi há 6 anos atrás
pai
commit
44717bbf11
1 ficheiros alterados com 27 adições e 0 exclusões
  1. 27 0
      bailian/4124.one-piece/main.cc

+ 27 - 0
bailian/4124.one-piece/main.cc

@@ -0,0 +1,27 @@
+#include <algorithm>
+#include <cstdio>
+#include <cstring>
+
+using namespace std;
+
+const int N = 16;
+
+int w[N][N];
+int dp[1 << N][N];
+int n;
+
+int main() {
+  scanf("%d", &n);
+  for (int i = 0; i < n; i++)
+    for (int j = 0; j < n; j++) scanf("%d", &w[i][j]);
+  memset(dp, 0x3F, sizeof(dp));  // Set dp[i][j] as 0x3F3F3F3F
+  dp[1][0] = 0;
+  for (int i = 1, fin = (1 << n) - 1; i <= fin; i++)
+    for (int j = 0, j_ = 1; j < n; j++, j_ <<= 1)
+      if (j_ & i)
+        for (int k = 0, k_ = 1; k < n; k++, k_ <<= 1)
+          if (k_ & i && k != j)
+            dp[i][k] = min(dp[i][k], dp[i ^ k_][j] + w[j][k]);
+  printf("%d\n", dp[(1 << n) - 1][n - 1]);
+  return 0;
+}