#include #include #include #include #include #include #include using namespace std; const int MAX_N = 20; int grafo[MAX_N][MAX_N]; int n, src; vector< vector< int > > v; void inizializza() { for ( int i = 0; i < n; ++i ) v[ 1 << i ][ i ] = grafo[ src ][ i ]; } int TSP( int stato, int x ) { if ( v[ stato ][ x ] != -1 ) return v[ stato ][ x ]; int mask = 1 << x; v[ stato ][ x ] = 1e9; for ( int i = 0; i < n; ++i ) if ( i != x && ( stato & ( 1 << i ) ) ) v[ stato ][ x ] = min( v[ stato ][ x ], TSP( stato - mask, i ) + grafo[ i ][ x ] ); return v[ stato ][ x ]; } int main() { ifstream fin("Iinput0.txt"); assert( fin ); fin >> n; v = vector< vector< int > >( 1 << n, vector< int >( n, -1 ) ); for(int j = 0; j < n; j++) for(int i = 0; i < n; i++) fin >> grafo[j][i]; fin.close(); inizializza(); ofstream fout("output.txt"); fout << TSP( ( 1 << n ) - 1, 0); fout.close(); return 0; }