Pagini recente » Cod sursa (job #1795326) | Cod sursa (job #1722459) | Cod sursa (job #1018611) | Cod sursa (job #808669) | Cod sursa (job #412378)
Cod sursa(job #412378)
#include<stdio.h>
#define nmax 20
int n,m;
int min=-1,v[nmax];
struct nod
{
int info,c;
nod *urm;
};
nod *t[nmax];
void InsertBegin(int a,int b,int c)
{
nod *aux;
aux=new nod;
aux->info=b;
aux->c=c;
aux->urm=t[a];
t[a]=aux;
}
void read()
{
scanf("%d%d",&n,&m);
int i,a,b,c;
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
InsertBegin(a,b,c);
}
}
void dfs(int k,int c,int nr)
{
if (k==0 && nr==n)
{
if (c<min || min<0)
min=c;
return;
}
nod *p;
for (p=t[k];p!=NULL;p=p->urm)
{
if (!v[p->info])
{
v[p->info]=1;
dfs(p->info,c+p->c,nr+1);
v[p->info]=0;
}
}
}
int main()
{
freopen("hamilton.in","r",stdin);
freopen("hamilton.out","w",stdout);
read();
dfs(0,0,0);
printf("%d\n",min);
return 0;
}