Pagini recente » Cod sursa (job #1220038) | Cod sursa (job #2625655) | Cod sursa (job #3000244) | Cod sursa (job #2695116) | Cod sursa (job #2444353)
#include <bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define N 20
#define INF 20000000
using namespace std;
typedef long long ll;
int dp[300005][N], x, y, i, n, m, cost[20][20], ans, j, ci, b;
vector<int> v[20];
void fast()
{
ios_base::sync_with_stdio(false);
cin.tie();
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
}
int main()
{
fast();
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>x>>y;
cin>>cost[x][y];
}
for(i=2;i<(1<<n);i++)
for(j=0;j<n;j++)
if(i&(1<<j))
{
ci=i;
b=0;
dp[i][j]=INF;
while(ci)
{
if(ci%2&&cost[b][j])
dp[i][j]=min(dp[i-(1<<j)][b]+cost[b][j],dp[i][j]);
b++;
ci/=2;
}
// cout<<dp[i][j]<<' ';
}
ans=INF;
for(j=0;j<n;j++)
if(cost[j][0])
ans=min(ans,dp[(1<<n)-1][j]+cost[j][0]);
if(n==1)
{
cout<<"0\n";
return 0;
}
if(ans==INF)
cout<<"Nu exista solutie";
else cout<<ans<<'\n';
return 0;
}