Pagini recente » Cod sursa (job #2785877) | Cod sursa (job #2975535) | Cod sursa (job #2316644) | Cod sursa (job #3292150) | Cod sursa (job #2060470)
#include<fstream>
#define MMAX 400
#define NMAX 20/*
int val[MMAX], nxt[MMAX], last[MMAX], cost[MMAX];
int cnt = 0;
int add(int a, int b, int c){
cnt++;
val[cnt] = v;
cost[cnt] = c;
nxt[cnt] = last[a];
last[a] = cnt;
}
*/
int ma[NMAX][NMAX], n, m;
int add(int a, int b, int c){
ma[a][b] = c;
}
using namespace std;
const int INF = 100000000;
int p[NMAX], sol = INF;
bool frq[NMAX];
void bkt(int k){
if(k > n){
int cost = ma[p[n]][p[1]];
for(int i = 1; i < n; i++){
cost += ma[p[i]][p[i+1]];
if(cost >= INF)
return;
}
if(cost < sol)
sol = cost;
return;
}
for(int i = 0; i < n; i++)
if(!frq[i]){
frq[i] = 1;
p[k] = i;
bkt(k + 1);
frq[i] = 0;
}
}
int main(){
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
fin >> n >> m;
int a, b, c;
for(int i = 0; i < NMAX; i++)
for(int j = 0; j < NMAX; j++)
ma[i][j] = INF;
for(int i = 1; i <= m; i++){
fin >> a >> b >> c;
add(a, b, c);
}
bkt(1);
if(sol < INF)
fout << sol;
else
fout << "Nu exista solutie";
return 0;
}