#include #include #include #include //#include #include #include #include #include #include //#include #include #include #include //#include #include #include //#include #include #include #include #include const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; using namespace std; typedef long long ll; typedef vector vi; typedef vector vll; typedef pair pii; vector G[20]; int dp[1<<15]; int dfs(int state, int n) { int& ret = dp[state]; if (ret >= 0) return ret; int m = __builtin_popcount(state); if (m==n) return ret = 0; ret = 0; for (int i = 0; i < n; i++) { if ((state>>i)&1) continue; int plus = 0; for (pii el : G[i]) { if ((state>>el.first)&1) plus += el.second; } ret = max(ret, plus + dfs(state|1<> N >> M; for (int i = 0; i < M; i++) { int i1, i2, s; cin >> i1 >> i2 >> s; G[i1].emplace_back(i2, s); } memset(dp, -1, sizeof(dp)); cout << dfs(0, N) << endl; return 0; }