Submission #93204

#TimeUsernameProblemLanguageResultExecution timeMemory
93204annastKronican (COCI16_kronican)C++14
60 / 100
2071 ms376 KiB
#include <bits/stdc++.h>

using namespace std;
int n,k,a[25][25],s,ans;
bool kt[25];
void Try(int i)
{
    if (s>ans) return;
    if (i==k)
    {
        ans=min(s,ans);
        return;
    }
    for (int l=1;l<=n;l++)
        if (kt[l])
    {
        kt[l]=false;
        int MIN=1e9;
        for (int j=1;j<=n;j++)
            if (kt[j] && j!=l) MIN=min(MIN,a[l][j]);
        s+=MIN;
        Try(i-1);
        s-=MIN;
        kt[l]=true;
    }
}
int main()
{
    //freopen("kronican.inp","r",stdin);
    //freopen("kronican.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>k;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++) cin>>a[i][j];
    memset(kt,true,sizeof(kt));
    s=0;ans=1e9;
    Try(n);
    cout<<ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...