#include #include #include #include using namespace std; #define For(i,x) for (int i=0; i<(int)(x); i++) typedef vector vi; struct Score { int item1; int item2; int score; }; int calc(int n, const std::vector& scores) { int maxscore = 0; vi v; For(i, n) v.push_back(i); do { vi indexes; for (int i = 0; i < v.size(); i++) { for (int j = 0; j < v.size(); j++) { if (i == v[j]) { indexes.push_back(j); break; } } } int score = 0; for (int i = 0; i < scores.size(); i++) { int item1 = scores[i].item1; int item2 = scores[i].item2; if (indexes[item1] < indexes[item2]) { score += scores[i].score; } } if (maxscore < score) maxscore = score; } while (next_permutation(v.begin(), v.end())); return maxscore; } int main() { int n, m; scanf("%d %d", &n, &m); vector v; For(i, m) { int a, b, score; scanf("%d %d %d", &a, &b, &score); v.push_back((Score){ a, b, score }); } printf("%d\n", calc(n, v)); }