Pagini recente » Cod sursa (job #2927970) | Cod sursa (job #1783613) | Cod sursa (job #65959) | Cod sursa (job #501233) | Cod sursa (job #2738919)
#include <bits/stdc++.h>
using namespace std;
ifstream f("hamilton.in");
ofstream g("hamilton.out");
int n,m,i,k,j,ans,x,y,cst,cost[25][25],dp[25][300100];
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>cst;
cost[x][y]=cst;
}
for(k=0;k<(1<<n);k++)
for(i=0;i<n;i++)
dp[i][k]=INT_MAX/2;
dp[0][1]=0;
for(k=1;k<(1<<n);k++)
{
for(i=0;i<n;i++)
{
if((k&(1<<i)))
{
for(j=0;j<n;j++)
{
if((k&(1<<j)) && cost[j][i]!=0)
{
dp[i][k]=min(dp[i][k],dp[j][(k^(1<<i))]+cost[j][i]);
}
}
}
}
}
ans=INT_MAX/2;
for(i=1;i<n;i++)
if(cost[i][0]!=0)ans=min(ans,dp[i][(1<<n)-1]+cost[i][0]);
if(ans==INT_MAX/2)g<<"Nu exista solutie";
else g<<ans;
return 0;
}