Pagini recente » Cod sursa (job #2647188) | Cod sursa (job #1744370) | Cod sursa (job #45008) | Cod sursa (job #2982416) | Cod sursa (job #2194265)
#include <iostream>
#include <fstream>
#include <vector>
#define inf 10000001
#define nmax 101
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int x[nmax],c[nmax][nmax],N,M;
int res,uz[nmax],sol,w,y,cost,A[nmax][nmax];
void answer(int k)
{
if(k==N+1)
{
if(A[x[1]][x[N]])
{
for(int i = 1; i < N ; i ++)
res+=c[x[i]][x[i+1]];
sol=min(sol,res);
}
}
else
{
for(int node= 0 ; node < N; node ++)
if(!uz[node])
{
uz[node]=1;
x[k]=node;
answer(k+1);
uz[node]=0;
}
}
}
void citire()
{
fin>>N>>M;
sol=inf;
for(int i =0 ; i < N; i ++)
for(int j =0; j < M; j++)
c[i][j]=inf;
for(int i =1 ; i <= M; i++)
{
fin>>w>>y>>cost;
A[w][y]=A[y][w]=1;
c[w][y]=cost;
}
}
int main()
{
citire();
answer(1);
if(sol==inf) fout<<"Nu exista solutie"<<'\n';
else fout<<sol<<'\n';
return 0;
}