#include using namespace std; struct Edge { int to; long long w; }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin >> N >> M; vector> g(N); struct E { int u, v; long long w; }; vector edges(M); for (auto &[u, v, w] : edges) { cin >> u >> v >> w; u--, v--; g[u].push_back({v, w}); g[v].push_back({u, w}); } // -1: 未取得, 0: Alice, 1: Bob vector owner(N, -1); for (int turn = 0; turn < N; ++turn) { int player = turn % 2; long long best = -1; int bestV = -1; for (int v = 0; v < N; ++v) { if (owner[v] != -1) continue; long long gain = 0; for (auto [to, w] : g[v]) { if (owner[to] == player) { gain += w; } } if (gain > best) { best = gain; bestV = v; } } owner[bestV] = player; } long long ans = 0; for (auto [u, v, w] : edges) { if (owner[u] != owner[v]) continue; if (owner[u] == 0) ans += w; else ans -= w; } cout << ans << '\n'; }