Pagini recente » Cod sursa (job #2899676) | Cod sursa (job #2086736) | Cod sursa (job #2267371) | Cod sursa (job #31520) | Cod sursa (job #2444508)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("hamilton.in");
ofstream fo("hamilton.out");
const int INF = 1e8;
int n, m;
int C[20][20];
int minim = INF;
bool f[20];
int v[20];
void bkt(int poz)
{
if (poz > n)
{
if (!C[v[n]][v[1]])
return;
int aici = 0;
for (int i = 1; i < n; i++)
aici += C[v[i]][v[i + 1]];
aici += C[v[n]][v[1]];
minim = min(minim, aici);
return;
}
for (int i = 1; i <= n; i++)
if (!f[i] && (poz == 1 || C[v[poz - 1]][i]))
{
v[poz] = i;
f[i] = 1;
bkt(poz + 1);
f[i] = 0;
v[poz] = 0;
}
}
int main()
{
fi >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v, c;
fi >> u >> v >> c;
u++; v++;
C[u][v] = c;
}
bkt(1);
if (minim == INF)
fo << "Nu exista solutie";
else
fo << minim;
return 0;
}