Pagini recente » Cod sursa (job #56482) | Cod sursa (job #1352498) | Cod sursa (job #550032) | Cod sursa (job #2475626) | Cod sursa (job #3164364)
#include <bits/stdc++.h>
using namespace std;
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) ;
#define ll long long
ifstream fin("hamilton.in") ;
ofstream fout("hamilton.out") ;
int dp[1<<18][18],n,m ;
vector <int> g[18] ;
int cost[18][18] ;
int memo(int term,int conf)
{
if(dp[conf][term]==-1)
{
dp[conf][term]=1e9;
for(int it:g[term])
{
if(conf&(1<<it)) dp[conf][term]=min(dp[conf][term],memo(it,conf^(1<<term))+cost[it][term]) ;
}
}
return dp[conf][term] ;
}
int main()
{
fin>>n>>m ;
for(int i=0;i<=n;++i)
for(int j=0;j<=n;++j) cost[i][j]=1e9 ;
for(int i=1,x,y,val; i<=m; ++i)
{
fin>>x>>y>>val ;
g[y].push_back(x) ;
cost[x][y]=val ;
}
int mn=1e9 ;
for(int i=0; i<n; ++i)
{
memset(dp,-1,sizeof(dp)) ;
dp[1<<i][i]=0 ;
for(auto it:g[i]) mn=min(mn,cost[it][i]+memo(it,(1<<n)-1)) ;
}
if(mn==1e9) fout<<"Nu exista solutie" ;
else fout<<mn ;
return 0;
}