Pagini recente » Cod sursa (job #635871) | Cod sursa (job #69721) | Cod sursa (job #1769797) | Cod sursa (job #2789688) | Cod sursa (job #1826462)
#include <cstdio>
using namespace std;
int Sum, Min, x, y, n, m, c, f[22], st[22], a[22][22];
inline void back(int k){
if(k == n + 1){
if(a[st[n]][st[1]] > 0){
Sum += a[st[n]][st[1]];
if(Sum < Min)
Min = Sum;
Sum -= a[st[n]][st[1]];
}
return ;
}
for(int i = 0; i < n ; ++i){
if(f[i] == 0){
st[k] = i;
if(a[st[k - 1]][st[k]] > 0){
Sum = Sum + a[st[k - 1]][st[k]];
f[i] = 1;
back(k + 1);
f[i] = 0;
Sum = Sum - a[st[k - 1]][st[k]];
}
}
}
}
int main()
{
freopen("hamilton.in", "r", stdin);
freopen("hamilton.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 1; i <= m ; ++i){
scanf("%d%d", &x, &y);
scanf("%d", &c);
a[x][y] = c;
}
Min = 2000000000;
for(int i = 0; i < n ; ++i){
st[1] = i;
f[i] = 1;
Sum = 0;
back(2);
f[i] = 0;
}
printf("%d", Min);
return 0;
}