Pagini recente » Cod sursa (job #2113974) | Cod sursa (job #623622) | Cod sursa (job #1312626) | Cod sursa (job #624982) | Cod sursa (job #2539147)
#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);
if(sumMin!=1e9)
fout<<sumMin;
else
fout<<"Nu exista solutie";
return 0;
}