Pagini recente » Cod sursa (job #366376) | Cod sursa (job #2742870) | Cod sursa (job #1457692) | Cod sursa (job #138005) | Cod sursa (job #2127388)
#include <iostream>
#include <cstdio>
#include <vector>
#define INF 0x3f3f3f3f
using namespace std;
vector <int> g[18];
int n,m,a,b,c;
int ct[18][18];
int d[1<<18][18];
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
scanf("%d %d", &n,&m);
for(int i=0;i<m;++i)
{
scanf("\n%d %d %d", &a,&b,&c);
g[b].push_back(a);
ct[a][b]=c;
}
for(int i=0;i<(1<<n);++i)
for(int j=0;j<n;++j)
d[i][j]=INF;
d[1][0]=0;
for(int i=1;i<(1<<n);++i)
{
for(int j=0;j<n;++j)
{
if(i&(1<<j))
{
for(int k:g[j])
if(i&(1<<k))
d[i][j]=min(d[i][j],d[i^(1<<j)][k]+ct[k][j]);
}
}
}
int rez=INF;
for(int i=1;i<n;++i)
if(ct[i][0])
rez=min(rez,d[(1<<n)-1][i]+ct[i][0]);
if(rez!=INF)
cout<<rez;
else
cout<<"Nu exista solutie";
return 0;
}