Pagini recente » Cod sursa (job #2474532) | Cod sursa (job #168722) | Cod sursa (job #955896) | Cod sursa (job #623884) | Cod sursa (job #3349052)
#include <fstream>
#define inf 1e9
using namespace std;
ifstream cin("hamilton.in");
ofstream cout("hamilton.out");
int n,m,x,y,c[19][19],dp[19][(1<<18)];
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(i!=j)
c[i][j]=inf;
for(int j=1;j<(1<<n);j++)
dp[i][j]=inf;
}
/// incepem ciclul din 1
dp[0][1]=0;
for(int i=1;i<=m;i++)
cin>>x>>y>>c[x][y];
for(int mask=1;mask<(1<<n);mask++){
for(int i=0;i<n;i++)
if((mask>>i)&1)
for(int j=0;j<n;j++)
if(!((mask>>j)&1))
dp[j][mask+(1<<j)]=min(dp[i][mask]+c[i][j],dp[j][mask+(1<<j)]);
}
int ans=inf;
for(int i=0;i<n;i++)
ans=min(ans,dp[i][(1<<n)-1]+c[i][0]);
if(ans==inf)
cout<<"Nu exista solutie";
else
cout<<ans;
return 0;
}