Pagini recente » Cod sursa (job #1017914) | Cod sursa (job #646735) | Cod sursa (job #1402940) | Cod sursa (job #423524) | Cod sursa (job #3195884)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int dp[(1 << 18) + 5][19];
int G[20][20];
int main()
{
int n,i,m,u,v,c,j;
fin >> n >> m;
memset(G, 0x3f, sizeof G);
memset(dp, 0x3f, sizeof dp);
for(i = 1; i <= m; i++){
fin >> u >> v >> c;
G[u][v] = c;
}
dp[1][0] = 0;
for(int k = 1; k < (1 << n); k++){
for(i = 0; i < n; i++){
if((1 << i) & k){
for(j = 0; j < n; j++){
if((1 << j) & k) dp[k][i] = min(dp[k][i], dp[k ^ (1 << i)][j] + G[j][i]);
}
}
}
}
int rez = 0x3f3f3f3f;
for(i = 0; i < n; i++) rez = min(rez, dp[(1 << n) - 1][i] + G[i][0]);
if(rez == 0x3f3f3f3f){
fout << "Nu exista solutie";
return 0;
}
fout << rez;
return 0;
}