#include #include #include #include #include #define REP(i,a,b) for(i=a;i opt) return; if(now == N-1){ if(opt > dist) opt = dist, res = 0; res++; return; } rep(i,N) if(!(mask&1<= 0) dfs(i, dist+edge[now][i], mask|(1< 0 ); rep(i,N) rep(j,N) edge[i][j] = -1; while(M--){ assert( scanf("%d%d%d",&i,&j,&k)==3 ); assert( i!=j && 1<=i && i<=N && 1<=j && j<=N ); assert( 1 <= k && k <= 10 ); i--; j--; assert( edge[i][j] == -1 ); edge[i][j] = edge[j][i] = k; } opt = 1000000000; res = 0; dfs(0, 0, 1); assert( res > 0 ); printf("%d\n",res); } return 0; }