Pagini recente » Cod sursa (job #1048496) | Cod sursa (job #3223170) | Cod sursa (job #2299691) | Cod sursa (job #2999342) | Cod sursa (job #1014304)
#include<cstdio>
#define inf 1<<24
using namespace std;
int mat[20][20],v[20],m,n,min,s=0;
int viz[20];
void read()
{
int x,y,c;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&c);
mat[x][y]=c;
}
}
void bkt(int k)
{
if(k==n)
{
if(s+mat[v[n-1]][v[0]]<min && mat[v[n-1]][v[0]]!=0)
min=s+mat[v[n-1]][v[0]];
}
else
{
for(int i=0;i<n;i++)
{
if(k!=0&&viz[i]==0&&mat[v[k-1]][i]!=0&&s+mat[v[k-1]][i]<min)
{
v[k]=i;
viz[i]=1;
s+=mat[v[k-1]][i];
bkt(k+1);
viz[i]=0;
s-=mat[v[k-1]][i];
}
else
{
if(k==0)
{
v[k]=i;
viz[i]=1;
bkt(1);
viz[i]=0;
}
}
}
}
}
void write()
{
if(min!=inf)
printf("%d",min);
else
printf("Nu exista solutie");
}
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
min=inf;
read();
bkt(0);
write();
}