Pagini recente » Cod sursa (job #952723) | Cod sursa (job #700822) | Cod sursa (job #901473) | Cod sursa (job #2750578) | Cod sursa (job #2063473)
#include <fstream>
using namespace std;
#define ll long long
#define INF 100000000
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int dp[263000][20],a[20][20];
int n,m,x,y,z,i,j,ans,v;
int main()
{
fin>>n>>m;
for (i=0; i<=n; i++)
for (j=0; j<=n; j++)
a[i][j]=INF;
for (i=1; i<=m; i++)
{
fin>>x>>y>>z;
a[x][y]=z;
}
for (i=0; i<1<<n; i++)
for (j=0; j<n; j++)
dp[i][j]=INF;
dp[1][0]=0;
m=(1<<n)-1;
for (i=0; i<=m; i++)
for (j=0; j<n; j++)
if (i&(1<<j))
for (v=0; v<n; v++)
if (a[v][j]!=INF)
if (dp[i^(1<<j)][v]+a[v][j]<dp[i][j])
dp[i][j]=dp[i^(1<<j)][v]+a[v][j];
ans=INF;
for (i=1; i<n; i++)
if (a[i][0]!=INF&&ans>dp[m][i]+a[i][0]) ans=dp[m][i]+a[i][0];
if (ans==INF) fout<<"Nu exista solutie";
else fout<<ans;
return 0;
}