Pagini recente » Cod sursa (job #2716470) | Cod sursa (job #1234924) | Cod sursa (job #1034499) | Cod sursa (job #1888126) | Cod sursa (job #3199830)
#include <iostream>
#include <cstdio>
#include <vector>
#include <utility>
#include <climits>
using namespace std;
#define pb(x) push_back(x)
#define fir first
#define sec second
typedef int ll;
typedef pair<ll,ll> pll;
vector<ll> ham(vector<vector<ll>> adi)
{
vector<ll> rez;
ll n=adi.size(),pn=(1<<n),msk,i,j,k;
vector<vector<ll>> dp(pn,vector<ll>(n,1e8));
for(i=1;i<n;i++)
dp[1<<i][i]=adi[0][i];
for(msk=1;msk<pn;msk++)
{
for(i=1;i<n;i++)
{
if(!((1<<i)&msk))continue;
for(j=0;j<n;j++)
{
if((1<<j)&msk)continue;
dp[msk+(1<<j)][j]=min(dp[msk+(1<<j)][j],dp[msk][i]+adi[i][j]);
}
}
}
if(dp[pn-1][0]==1e8)return cout<<"Nu exista solutie",rez;
cout<<dp[pn-1][0]<<endl;
return rez;
}
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n,m,i,j,a,b,c;
cin>>n>>m;
vector<vector<ll>> adi(n,vector<ll>(n,1e8));
for(i=0;i<m;i++)
{
cin>>a>>b>>c;
adi[a][b]=c;
}
ham(adi);
return 0;
}