ll read( ){ ll x = 0, f = 1; char ch = getchar( ); for( ; !isdigit( ch ); ch = getchar( ) ) if( ch == '-' ) f = -1; for( ; isdigit( ch ); ch = getchar( ) ) x = x * 10 + ch - '0'; return x * f; }
structRelation { int a, b, c; } p[20];
int a[20];
voidsolve( ){ int t = clock( ); srand( time( 0 ) ); int n = read( ); for( int i = 1; i <= n; ++ i ) a[i] = i; for( int i = 1; i <= n; ++ i ) { p[i].a = read( ), p[i].b = read( ), p[i].c = read( ); }
ll mn = inf; while( clock( ) - t <= 0.9 * CLOCKS_PER_SEC ) { random_shuffle( a + 1, a + n + 1 ); ll res = 0; for( int i = 1; i <= n; ++ i ) { res += abs( a[i] - a[p[i].a] ); res += abs( a[i] - a[p[i].b] ); res += abs( a[i] - a[p[i].c] ); } mn = min( mn, res / 2 ); } cout << mn << '\n'; }
intmain( ){ int T = 1; // int T = read( ); while( T -- ) solve( ); return0; }
int cut[1 << 12]; int f[1 << 12]; int g[20][20]; int a[20];
voidsolve( ){ int n = read( ); for( int i = 0; i < n; ++ i ) { int a = read( ) - 1; int b = read( ) - 1; int c = read( ) - 1; g[i][a] = 1, g[i][b] = 1, g[i][c] = 1; }
int all = 1 << n; for( int mask = 0; mask < all; ++ mask ) { for( int u = 0; u < n; ++ u ) { for( int v = u + 1; v < n; ++ v ) { if( g[u][v] == 0 ) continue; if( ( ( mask >> u ) & 1 ) == ( ( mask >> v ) & 1 ) ) continue; cut[mask] ++; } } }
memset( f, 127, sizeof f ); f[0] = 0; for( int mask = 0; mask < all; ++ mask ) { for( int v = 0; v < n; ++ v ) { if( mask & ( 1 << v ) ) continue; int nxt = mask | ( 1 << v ); f[nxt] = min( f[nxt], f[mask] + cut[nxt] ); } } cout << f[all - 1] << '\n'; }