Pagini recente » Cod sursa (job #2722895) | Cod sursa (job #312987) | Cod sursa (job #592288) | Cod sursa (job #2639674) | Cod sursa (job #1967145)
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
#define nmax 20
int n, m, a[nmax][nmax], costmin, st[nmax];
bool viz[nmax]={0};
void citire()
{
int i, x, y, z;
fin>>n>>m;
for(i=1; i<=m; i++)
{
fin>>x>>y>>z;
x++; y++;
a[x][y]=z;
}
fin.close();
}
void solutie()
{
if(!a[st[n]][1])
return;
int i, cost;
cost=0;
for(i=1; i<n; i++)
cost+=a[st[i]][st[i+1]];
cost+=a[st[n]][1];
if(cost<costmin)
costmin=cost;
}
void bt(int k)
{
if(k==n+1)
solutie();
else for(int i=2; i<=n; i++)
{
if(a[st[k-1]][i])
if(!viz[i])
{
st[k]=i;
viz[i]=1;
bt(k+1);
viz[i]=0;
}
}
}
int main()
{
citire();
costmin=INT_MAX;
st[1]=1;
viz[1]=1;
bt(2);
fout<<costmin<<'\n';
fout.close();
return 0;
}