#include #include #include using namespace std; int main() { // 入出力の高速化 ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; if (!(cin >> N >> M)) return 0; // 各企業に結ばれている契約の価値の合計を保持する配列 // オーバーフローを防ぐため long long 型を使用 vector C(N, 0); for (int i = 0; i < M; ++i) { int u, v; long long w; cin >> u >> v >> w; // 0-indexedに変換 --u; --v; // 企業uと企業vの両方に価値wを加算する C[u] += w; C[v] += w; } // 価値が大きい順にソート sort(C.rbegin(), C.rend()); long long ans = 0; // AliceとBobが交互に価値が最大の企業を取っていく for (int i = 0; i < N; ++i) { if (i % 2 == 0) { ans += C[i]; // Aliceのターン } else { ans -= C[i]; // Bobのターン } } // 全ての価値を2倍して計算していたため、最後に2で割る cout << ans / 2 << "\n"; return 0; }