#include #include #include #include #include #include #include using namespace std; const int nMax = 20; int graph[nMax][nMax]; int n, src; vector > matrix; int tsp_sol(int k, int m) { if (matrix[k][m] != -1) return matrix[k][m]; int mk = 1 << m; matrix[k][m] = 100000000; for (int i = 0; i < n; ++i ) if (i != m && (k & (1 << i))) matrix[k][m] = min(matrix[k][m], tsp_sol(k - mk, i) + graph[i][m]); return matrix[k][m]; } int main() { ifstream fin("Iinput0.txt"); assert( fin ); fin >> n; matrix = vector >(1 << n, vector(n, -1)); for(int j = 0; j < n; j++) for(int i = 0; i < n; i++) fin >> graph[j][i]; fin.close(); for (int i = 0; i < n; ++i) matrix[1 << i][i] = graph[src][i]; ofstream fout("output.txt"); fout << tsp_sol((1 << n ) - 1, 1); fout.close(); return 0; }