Pagini recente » Cod sursa (job #315098) | Diferente pentru utilizator/iacobtudor intre reviziile 36 si 35 | Monitorul de evaluare | Istoria paginii runda/pregatire_ichb_2017 | Cod sursa (job #2510158)
#include <fstream>
#include <cstring>
#define inf 0x7F7F7F7F
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int n,m,i,j,k,c[18][18],d[18][1<<18],sol;
int main(){
fin>>n>>m;
for(;m;m--){
fin>>i>>j;
fin>>c[i][j];
}
memset(d,127,sizeof(d));
d[0][1]=0;
for(j=1;j<(1<<n);j+=2)
for(i=0;i<n;i++)
if(d[i][j]!=inf)
for(k=1;k<n;k++)
if(c[i][k] && (j&(1<<k))==0)
d[k][j+(1<<k)]=min(d[k][j+(1<<k)],d[i][j]+c[i][k]);
sol=inf;
for(i=1;i<n;i++)
if(c[i][0])
sol=min(sol,d[i][(1<<n)-1]+c[i][0]);
if(sol==inf)
fout<<"Nu exista solutie";
else
fout<<sol;
return 0;
}