Pagini recente » Cod sursa (job #2714387) | Cod sursa (job #1079268) | Cod sursa (job #208239) | Cod sursa (job #481019) | Cod sursa (job #2738367)
#include <bits/stdc++.h>
using namespace std;
ifstream f("hamilton.in");
ofstream g("hamilton.out");
int n,m,i,x,y,c,k,N,ans,j,cost[21][21],dp[20][300100];
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
cost[x][y]=c;
}
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;
N=(1<<n)-1;
for(i=0;i<n;i++)
if(cost[i][0]!=0 && dp[i][N]!=INT_MAX/2)ans=min(ans,dp[i][N]+cost[i][0]);
if(ans==INT_MAX)g<<"Nu exista solutie";
else g<<ans;
return 0;
}