Pagini recente » Cod sursa (job #1329613) | Cod sursa (job #2555650) | Cod sursa (job #2840165) | Cod sursa (job #1262757) | Cod sursa (job #1611572)
#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[1<<19][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[a].push_back(b);
}
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 maxi = 0;
k = 1<<n;
k--;
for(i = 1 ; i < n; i++)
maxi = max(maxi, dp[k][i] + cost[i][0]);
if(maxi)
fout<<maxi;
else
fout<<"Nu exista solutie";
return 0;
}