제출 #1359050

#제출 시각아이디문제언어결과실행 시간메모리
1359050juan11pedroKronican (COCI16_kronican)C++20
100 / 100
548 ms8628 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back
#define f first
#define s second 

int C[2000010];
int P[30][30];

int32_t main(){
    int N, M;
    cin>>N>>M;
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            cin>>P[i][j];
        }
    }
    for(int i=0;i<(1<<N);i++){
        C[i]=1e9;
    }
    C[0]=0;
    int t=1e9;
    for(int i=0;i<(1<<N);i++){
        int p=0;
        //cerr<<C[i]<<" ";
        for(int j=0;j<N;j++){
            if((i&(1<<j))==0){
                for(int h=0;h<N;h++){
                    if((i&(1<<h))==0 and j!=h){
                        C[i|(1<<j)]=min(C[i|(1<<j)], C[i]+P[j][h]);
                    }
                }
                p++;
            }
        }
        if(p==M){
            //cerr<<i<<" ";
            t=min(t, C[i]);
        }
    }
    cout<<t;
}
#Verdict Execution timeMemoryGrader output
Fetching results...