Pagini recente » Profil hasmasandragos | Cod sursa (job #3041792) | Cod sursa (job #687576)
Cod sursa(job #687576)
#include<cstdio>
#include<vector>
int n,m,nod,mask,i,j,x,y,z,mat[20][20],D[20][300000],max=1000000009,k;
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
mat[x][y]=z;
}
for(i=0;i<n;i++)
for(j=0;j<(1<<n);j++)
D[i][j]=10000000;
D[0][1]=0;
for(mask=1;mask<(1<<n);mask++)
for(nod=0;nod<n;nod++)
if(((mask&(1<<nod))!=0))
for(k=0;k<n;k++)
if(mat[nod][k]&&((mask&(1<<k))==0))
if(D[k][mask+(1<<k)]>D[nod][mask]+mat[nod][k])
D[k][mask+(1<<k)]=D[nod][mask]+mat[nod][k];
for(i=0;i<n;i++)
if(D[i][((1<<n)-1)]+mat[i][0]<max&&mat[i][0])
max=D[i][(1<<n)-1]+mat[i][0];
if(max==1000000009)
printf("Nu exista solutie");
else
printf("%d",max);
return 0;
}