Pagini recente » Cod sursa (job #1545314) | Cod sursa (job #722588) | Cod sursa (job #408199) | Cod sursa (job #186567) | Cod sursa (job #2060491)
#include<fstream>
using namespace std;
#define MMAX 400
#define NMAX 20
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 sol = INF;
bool viz[NMAX];
void dfs(int nod, int dd, int sum){
if(dd == n){
if(ma[nod][0] < INF){
sum += ma[nod][0];
if(sum < sol)
sol = sum;
}
return;
}
viz[nod] = 1;
for(int i = 1; i <= n; i++){
if(!viz[i] && ma[nod][i] < INF)
dfs(i, dd + 1, sum + ma[nod][i]);
}
viz[nod] = 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);
}
dfs(0, 1, 0);
if(sol < INF)
fout << sol;
else
fout << "Nu exista solutie";
return 0;
}