#include<bits/stdc++.h> usingnamespace std; #define ll long long constint INF = 0x3f3f3f3f; constint N = 2e5 + 10; int n, m; int w[100][100], d[100][20], c[100]; intmain(){ srand(time(0)); scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++)scanf("%d", &w[i][j]); } int T = 10000, ans = INF; while (T--) { memset(d, 0x3f, sizeof(d)); d[1][0] = 0; for (int i = 1; i <= n; i++)c[i] = rand() % 2; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { for (int k = 1; k <= n; k++) { if (c[j] ^ c[k])d[j][i] = min(d[j][i], d[k][i - 1] + w[k][j]); } } } ans = min(ans, d[1][m]); } cout << ans << endl; return0; }