Pagini recente » Cod sursa (job #1745035) | Cod sursa (job #1812988) | Cod sursa (job #8356) | Cod sursa (job #2450213)
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
const int nax=18;
const int inf=(int)1e9;
int n,m;
vector <int> g[nax];
int co[nax][nax];
int jeg[nax][1<<nax];
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=0;i<m;i++)
{
int x,y;
scanf("%d %d",&x,&y);
scanf("%d",&co[x][y]);
g[y].push_back(x);
}
for(int i=0;i<n;i++) for(int j=0;j<(1<<n);j++) jeg[i][j]=inf;
jeg[0][1]=0;
for(int m=1;m<(1<<n);m++) for(int i=0;(1<<i)<=m;i++) if(m&(1<<i)) for(auto &j : g[i]) jeg[i][m]=min(jeg[i][m],jeg[j][m-(1<<i)]+co[j][i]);
int ans=inf;
for(auto &l : g[0]) ans=min(ans,jeg[l][(1<<n)-1]+co[l][0]);
if(ans==inf) ans=-1;
printf("%d\n",ans);
return 0;
}