Pagini recente » Cod sursa (job #1702963) | Cod sursa (job #2541343) | Cod sursa (job #22398) | Cod sursa (job #2451694) | Cod sursa (job #1561128)
#include <iostream>
#include <cstdio>
using namespace std;
struct nod
{
int inf,cost;
nod*a;
}*p[20];
int n,m,mini,s[20],nr;
int ver()
{
for(int i=0;i<n;i++)
if(s[i]==0)
return 0;
return 1;
}
void par(int x)
{
//cout<<x<<" ";
if(x==1 && s[1]==1)
{
if(nr<mini)
if(ver())
mini=nr;
// cout<<endl<<"!"<<nr<<" "<<mini<<endl;
}
else if(nr<mini)
{
for(nod*c=p[x];c!=NULL;c=c->a)
if(s[c->inf]==0)
{
s[c->inf]=1;
nr+=c->cost;
par(c->inf);
s[c->inf]=0;
nr-=c->cost;
}
}
}
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
scanf("%d %d",&n,&m);
int x,y,z;
for(int i=0;i<m;i++)
{
scanf("%d %d %d",&x,&y,&z);
mini+=z;
nod*c=new nod;
c->inf=y;
c->cost=z;
c->a=p[x];
p[x]=c;
}
nr=0;
par(1);
if(mini)
printf("%d",mini);
else printf("Nu exista solutie");
return 0;
}