Cod sursa(job #2844956)

Utilizator TeodorMarciucMarciuc Teodor TeodorMarciuc Data 6 februarie 2022 15:43:56
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<vector>
using namespace std;
int n,m,i,j,k,dp[(1<<20)][20],cst,cost[20005][20005],ans=1e9,x,y;
vector<vector<int>>mu;
int main(){
    cin>>n>>m;
    mu.resize((1<<n));
    for(i=1;i<=m;i++)
    {
        cin>>cst>>x>>y;
        mu[y].emplace_back(x);
        cost[x][y]=cst;
    }
    dp[1][0]=0;
    for(i=0;i<(1<<n);i++)
        for(j=0;j<=n;j++)
        dp[i][j]=1e9;
    for(i=0;i<(1<<n);i++)
        for(j=0;j<=n;j++)
            if((1<<j)&i)
            for(auto k:mu[j])
            if((1<<k)&i)
            dp[i][j]=min(dp[i][j],dp[i^(1<<j)][k]+cost[k][j]);
    for(auto i:mu[0])
        ans=min(ans,dp[(1<<n)-1][i])+cost[i][0];
    if(ans!=1e9)
    cout<<ans;
    else cout<<"Nu exista solutie";
}