Pagini recente » Cod sursa (job #1784101) | Cod sursa (job #3005065) | Cod sursa (job #1960001) | Cod sursa (job #379347) | Cod sursa (job #1611584)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int i,j,n,m,z,q,k;
const int inf = 1<<30;
int dp[263150*2][20],cost[20][20];
vector <int> v[20];
int main()
{
fin >> n>> m;
memset(dp,inf,sizeof(dp));
memset(cost,inf,sizeof(cost));
for(i = 1; i <= m; i++)
{
int a,b,c;
fin >> a >> b >> c;
cost[a][b] = c;
v[b].push_back(a);
}
dp[1][0] = 0;
for(i = 1; i < 1<<n; i++)
for(j = 0; j < n; j++)
if(i & (1<<j))
for(q = 0; q < v[j].size(); q++)
if(i & (1<<v[j][q]))
dp[i][j] = min(dp[i][j], dp[i ^ (1<<j)][v[j][q]] +cost[v[q][j]][j]);
int mini = inf;
k = 1<<n;
k--;
for(i = 0 ; i < v[0].size(); i++)
mini= min(mini, dp[k][v[0][i]] + cost[v[0][i]][0]);
if(mini!=inf)
fout<<mini;
else
fout<<"Nu exista solutie";
return 0;
}