/* 随机,给每个点黑白随机黑白染色,由于题目要求路径必须黑白相间 dp[k][i]表示长度为k的路径,终点是i的最小代价 除去点1之外,最小值对应的路径里最多有9个点,那么这条路径随机到颜色对应的概率是1/512 那么随机5000次,这个概率就接近1了 */ #include<bits/stdc++.h> using namespace std; #define ll long long #define N 100 ll n,mp[N][N],c[N],K,ans,dp[15][N]; void solve(){ memset(dp,0x3f,sizeof dp); dp[0][1]=0; for(int k=1;k<=K;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(c[i]!=c[j] && dp[k-1][j]!=0x3f3f3f3f3f3f3f3f) dp[k][i]=min(dp[k][i],dp[k-1][j]+mp[j][i]); ans=min(ans,dp[K][1]); } int main(){ cin>>n>>K; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>mp[i][j]; ans=0x3f3f3f3f3f3f3f3f; int t=5000;srand(time(0)); while(t--){ for(int i=1;i<=n;i++)c[i]=rand()%2; solve(); } cout<<ans<<' '; }