Pagini recente » Cod sursa (job #779782) | Cod sursa (job #1622060) | Cod sursa (job #2970189) | Cod sursa (job #232120) | Cod sursa (job #2560439)
#include <bits/stdc++.h>
#define Inf 10000007
using namespace std;
ifstream in("hamilton.in");
ofstream out("hamilton.out");
int n,m;
vector <int> gf[18];
int dp[18][1<<18];
int cost[18][18];
int main()
{
in>>n>>m;
for(int i,j,ct,k=1;k<=m;k++)
{
in>>i>>j>>ct;
cost[i][j]=ct;
gf[j].push_back(i);
}
for(int i=0;i<(1<<n);i++)
for(int nod=0;nod<n;nod++)
dp[nod][i]=Inf;
dp[0][1<<0]=0;
for(int i=1;i<(1<<n);i++)
for(int nod=0;nod<n;nod++)
if(i&(1<<nod))
{
for(auto vec:gf[nod])
if(i&(1<<vec))
dp[nod][i]=min(dp[nod][i],dp[vec][i-(1<<nod)]+cost[vec][nod]);
}
int minim=Inf;
for(auto vec:gf[0])
minim=min(minim,dp[vec][(1<<n)-1]+cost[vec][0]);
if(minim!=Inf)
out<<minim;
else
out<<"Nu exista solutie";
return 0;
}