Pagini recente » Cod sursa (job #763638) | Cod sursa (job #238786) | Cod sursa (job #2525669) | Cod sursa (job #535201) | Cod sursa (job #2546734)
#include <iostream>
#include <fstream>
#define pinf 20000000
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int d[262160][20],N,M,a[20][20],minn;
int main()
{
int i,j,x,y,c,k,aux;
fin>>N>>M;
for(i=1; i<=M; i++)
{
fin>>x>>y>>c;
a[x][y]=c;
}
for(i=3; i<=(1<<N)-1; i=i+2)
{
for(j=1; j<N; j++)
{
if((i&(1<<j))==(1<<j))
{
d[i][j]=pinf;
aux=i-(1<<j);
if(aux==1)
{
if(a[0][j]!=0)
d[i][j]=a[0][j];
}
else
{
for(k=1; k<N; k++)
{
if(((aux&(1<<k))==(1<<k)))
{
if(a[k][j]!=0)
d[i][j]=min(d[i][j],d[aux][k]+a[k][j]);
}
}
}
}
}
}
minn=pinf;
i=(1<<N)-1;
for(j=1; j<N; j++)
{
if(a[j][0]!=0)
minn=min(minn,d[i][j]+a[j][0]);
}
if(minn!=pinf)
fout<<minn;
else
fout<<"Nu exista solutie";
}