Pagini recente » Cod sursa (job #2699180) | Cod sursa (job #1734133) | Cod sursa (job #2686398) | Cod sursa (job #1621455) | Cod sursa (job #3038589)
#include <bits/stdc++.h>
using ll=long long;
#define S second
#define F first
#define endl '\n'
#define spid ios_base::sync_with_stdio(false);cin.tie(NULL);
const int mod=1e9+7;
const double pi=3.14159265359;
const int maxn=19;
using namespace std;
int m,n;
vector<vector<pair<int,int>>> A(maxn,vector<pair<int,int>>());
int dp[262144][19];
int main(){
ifstream fin("hamilton.in");
ofstream cout("hamilton.out");
fin>>n>>m;
for(int i=0;i<m;i++){
int c1,c2,c3;
fin>>c1>>c2>>c3;
A[c2].push_back({c1,c3});
}
for(int i=0;i<n;i++){
for(int j=0;j<(1<<n);j++)dp[j][i]=1e9;
}
dp[1][0]=0;
for(int k=0;k<(1<<n);k++){
for(int i=0;i<n;i++){
if(k&(1<<i)){
for(int j=0;j<A[i].size();j++){
if(k&(1<<A[i][j].F))dp[k][i]=min(dp[k][i],dp[k^(1<<i)][A[i][j].F]+A[i][j].S);
}
}
}
}
int mn=1e9;
for(int i=0;i<A[0].size();i++){
mn=min(mn,dp[(1<<n)-1][A[0][i].F]+A[0][i].S);
}
if(mn==1e9)cout<<"Nu exista solutie"<<endl;
else cout<<mn<<endl;
}