Pagini recente » Cod sursa (job #1838458) | Cod sursa (job #874917) | Cod sursa (job #1701026) | Cod sursa (job #1171226) | Cod sursa (job #2844956)
#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";
}