Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. cin >> n;
  2. for (int i = 0; i < n; i++) {
  3. for (int j = 0; j < n; j++) cin >> w[i][j];
  4. }
  5. for (int i = 0; i < n; i++)
  6. for (int j = 0; j < (1<<n); j++) dp[i][j] = INF;
  7. dp[0][0] = 0;
  8. for (int mask = 0; mask < (1<<n); mask++){
  9. for (int v = 0; v < n; v++) {
  10. if (mask & (1 << v)){
  11. for (int u = 0; u < n; u++){
  12. if ((mask & (1 << u)) && (u != v))
  13. dp[v][mask] = min(dp[v][mask], w[v][u] + dp[u][mask ^ (1 << v)]);
  14. }
  15. }
  16. }
  17. }
  18. long long ans = INF;
  19. for (int v = 0; v < n; v++) ans = min(ans, dp[v][(1<<n) - 1]);
  20. cout << ans << '\n';
  21. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement