5 8
1 2 2
1 5 10
2 3 3
2 5 7
3 1 4
3 4 4
4 5 5
5 3 3
#include<iostream>
using namespace std;
/*
1 2 2
1 5 10
2 3 3
2 5 7
3 1 4
3 4 4
4 5 5
5 3 3
*/
const int maxn=1000;
int arr[maxn][maxn];
int mark[maxn]={0};
int n,m,a,b,c,sum,minn=10000;
void dfs(int cur)
{
if(cur==5)
{
if(sum<minn)
{
minn=sum;
}
return ;
}
for(int i=1;i<=n;i++)
{
if(arr[cur][i]!=0&&arr[cur][i]!=999999&&mark[i]==0)
{
sum+=arr[cur][i];
mark[i]=1;
dfs(i);
mark[i]=0;
sum-=arr[cur][i];
}
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)
{
arr[i][j]=0;
}
else
{
arr[i][j]=999999;
}
}
}
for(int i=1;i<=m;i++)
{
cin>>a>>b>>c;
arr[a][b]=c;
}
mark[1]=1;
dfs(1);
cout<<minn;
return 0;
}