Pagini recente » Cod sursa (job #2363136) | Cod sursa (job #3128226) | Cod sursa (job #2511941) | Cod sursa (job #354993) | Cod sursa (job #2546733)
#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=1; i<=(1<<(N-1))-1; i++)
{
for(j=0; j<N-1; j++)
{
if((i&(1<<j))==(1<<j))
{
d[i][j+1]=pinf;
aux=i-(1<<j);
if(aux==0)
{
if(a[0][j+1]!=0)
d[i][j+1]=a[0][j+1];
}
else
{
for(k=0; k<N-1; k++)
{
if(((aux&(1<<k))==(1<<k)))
{
if(a[k+1][j+1]!=0)
d[i][j+1]=min(d[i][j+1],d[aux][k+1]+a[k+1][j+1]);
}
}
}
}
}
}
minn=pinf;
i=(1<<(N-1))-1;
for(j=0; j<N-1; j++)
{
if(a[j+1][0]!=0)
minn=min(minn,d[i][j+1]+a[j+1][0]);
}
if(minn!=pinf)
fout<<minn;
else
fout<<"Nu exista solutie";
}