Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <bitset>
- #include <cassert>
- #include <cmath>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <iostream>
- #include <list>
- #include <map>
- #include <queue>
- #include <set>
- #include <string>
- #include <sstream>
- #include <vector>
- #include <complex>
- #include <ctime>
- #include <stack>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef vector<int> VI;
- typedef vector< VI > VVI;
- typedef pair<int, int> PII;
- typedef vector<PII> VPII;
- #define REP(i, n) for(int i = 0; i < (n); ++i)
- #define RREP(i, n) for(int i = (n) - 1; i >= 0; --i)
- #define FOR(i, x, y) for(int i = (x); i <= (y); ++i)
- #define RFOR(i, x, y) for(int i = (x); i >= (y); --i)
- #define SZ(a) (int)(a).size()
- #define ALL(a) (a).begin(),(a).end()
- #define SORT(a) sort(ALL(a))
- #define CLEAR(x) memset(x, 0, sizeof x);
- #define COPY(FROM, TO) memcpy(TO, FROM, sizeof TO);
- #define UNIQUE(c) SORT(c),(c).resize(unique(ALL(c))-(c).begin())
- #define pb push_back
- #define mk make_pair
- #define sqr(x) ((x)*(x))
- #define X first
- #define Y second
- const long double pi=acos(-1.0);
- const double EPS = 1E-5;
- const int INF = 2 * (1e+9) + 1;
- const int NMAX = 32000;
- const int MOD = 1e+25;
- int n, k;
- int a[13][13];
- ll dp[1<<13][13];
- int main () {
- /*freopen("ladder.in", "r" ,stdin);
- freopen("ladder.out", "w", stdout);*/
- cin >> n;
- REP (i, n) REP (j, n) cin >> a[i][j];
- FOR (mask, 1, 1<<13) {
- REP (i, 13) {
- if (mask & (1<<i)) {
- int cur = (mask ^ (1<<i));
- ll minn = INF;
- REP (j, 13)
- if (cur & (1<<j))
- minn = min (minn, dp[cur][j] + a[i][j]);
- dp[mask][i] = minn;
- }
- }
- }
- int minn = INF;
- REP (i, 13)
- minn = dp[(1<<13) - 1][i];
- cout << minn;
- return 0;
- }
- /*
- 5
- 0 183 163 173 181
- 183 0 165 172 171
- 163 165 0 189 302
- 173 172 189 0 167
- 181 171 302 167 0
- */
Advertisement
Add Comment
Please, Sign In to add comment