Pagini recente » Cod sursa (job #2143014) | Cod sursa (job #157310) | Cod sursa (job #157148) | Cod sursa (job #1855748) | Cod sursa (job #382668)
Cod sursa(job #382668)
#include <cstdio>
#include <cstring>
#define file_in "hamilton.in"
#define file_out "hamilton.out"
#define Nmax 1000
int a,b,c,n,m,cmax,p[100],q[100][100],viz[1000];
void back(int k)
{
if (k>n)
{
//for (int i=1;i<=n;++i)
// printf("%d " ,p[i]);
int cost=0,nr=0;
cost+=q[p[n]][p[1]];
for (int j=1;j<n;++j)
{
cost+=q[p[j]][p[j+1]];
}
//printf("%d\n", cost);
if (cost<cmax && cost>0) cmax=cost;
}
else
for (int i=1;i<=n;++i)
if (!viz[i])
{
viz[i]=1;
p[k]=i;
back(k+1);
viz[i]=0;
}
}
int main()
{
int i,j;
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
q[i][j]=0x3f3f3f3f;
for (i=1;i<=m;++i)
{
scanf("%d %d %d", &a, &b, &c);
a++;
b++;
q[a][b]=c;
}
/*for (i=1;i<=n;++i)
{
for (j=1;j<=n;++j)
printf("%d ", q[i][j]);
printf("\n");
}*/
cmax=0x3f3f3f3f;
back(1);
if (cmax==0x3f3f3f3f) printf("Nu exista solutie");
else
printf("%d", cmax);
fclose(stdin);
fclose(stdout);
return 0;
}