RT,#1和#3WA了
#include<cstdio>
#include<cstring>
const int N=25,S=2200005,inf=1e9;
int n,m,u,v,w,d[N][N],em[N],f[S][N],ans=inf;
inline int min(int x,int y){return x<y?x:y;}
main()
{
scanf("%d%d",&n,&m);em[1]=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)d[i][j]=inf;
for(int i=2;i<=n+1;++i)em[i]=em[i-1]*2;
int s=em[n+1]-1;
for(int i=1;i<=m;++i)scanf("%d%d%d",&u,&v,&w),d[u][v]=w;
for(int k=1;k<=n;++k)
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
for(int i=1;i<=n;++i)
for(int j=1;j<=s;++j)f[j][i]=inf;
for(int i=1;i<=n;++i)f[em[i]][i]=0;
for(int i=1;i<=s;++i)
for(int j=1;j<=n;++j)
if(i&em[j])
for(int k=1;k<=n;++k)
if(!(i&em[k]))
{
int ii=i|em[k];
f[ii][k]=min(f[ii][k],f[i][j]+d[j][k]);
}
for(int i=1;i<=n;++i)ans=min(ans,f[s][i]);
if(ans==inf)printf("No");
else printf("%d",ans);
}