#include using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; typedef unsigned long long ull; #define INF 100000000 int cost[30][30]; void hungarian(vector &x, vector &y){ int n = x.size(); int p, q; vector fx(n,INF), fy(n,0); for(int i=0; i t(n,-1), s(n+1,i); for(p=q=0; p<=q && x[i]<0; ++p) for(int k=s[p],j=0; j=0; j=p) y[j] = k = t[j], p = x[k], x[k] = j; } if(x[i]<0){ int d = INF; for(int k=0; k<=q; ++k) for(int j=0; j> N; rep(i,N){ rep(j,N){ cin >> cost[i][j]; if(i==j) cost[i][j] = 0; } } vector x(N,-1), y(N,-1); hungarian(x, y); int ret = 0; rep(i,N){ assert(x[i] != -1); assert(y[i] != -1); ret += cost[i][x[i]]; } cout << ret/2 << endl; return 0; }