Pagini recente » Cod sursa (job #1988421) | Cod sursa (job #2161993) | Cod sursa (job #413173) | Cod sursa (job #2656399) | Cod sursa (job #2539146)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("hamilton.in");
ofstream fout("hamilton.out");
int n,m,x,y,c,sum;
int sumMin=1e9;
int a[100][100];
int sol[100];
bitset <100> b;
void citire()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y>>c;
x++;
y++;
a[x][y]=c;
}
}
void backtr(int pas)
{
if(sum>=sumMin)
return;
if(pas==n+1)
{
if(a[sol[n]][1]==0)
return;
sum+=a[sol[n]][1];
sumMin=min(sum,sumMin);
sum-=a[sol[n]][1];
return;
}
for(int i=2;i<=n;i++)
{
if(b[i]==0 && a[sol[pas-1]][i]!=0)
{
sol[pas]=i;
b[i]=1;
sum+=a[sol[pas-1]][i];
backtr(pas+1);
b[i]=0;
sum-=a[sol[pas-1]][i];
}
}
}
int main()
{
citire();
sol[1]=1;
b[1]=1;
backtr(2);
fout<<sumMin;
return 0;
}