Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Bismillahir-Rahmanir-Rahim
- #include <bits/stdc++.h>
- using namespace std;
- #define flash ios_base::sync_with_stdio(0),cin.tie(0)
- #define pb push_back
- #define ll long long
- #define ld long double
- #define dbg(x) cerr << #x << " = " << x << "\n";
- #define ff first
- #define ss second
- // #define int long long
- /*
- #pragma GCC target ("avx2")
- #pragma GCC optimization ("O3")
- #pragma comment (linker, "/stack:200000000")
- #pragma GCC optimize("Ofast")
- #pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- */
- const long long INF = 1e9 + 7;
- const long long MOD = 1e9 + 7;
- const int maxn = 1e6 + 10;
- const int lg = 20;
- int n, p[maxn], m, ans;
- vector <pair <int, pair <int, int>> > lst;
- int get(int v) {
- if (v == p[v]) {
- return v;
- }
- p[v] = get(p[v]);
- return p[v];
- }
- void merge(int v, int u) {
- int pv = get(v);
- int pu = get(u);
- if (pv != pu) {
- p[pu] = pv;
- }
- }
- void press_F_() {
- cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- p[i] = i;
- }
- for (int i = 1; i <= m; i++) {
- int a, b, c;
- cin >> a >> b >> c;
- lst.pb({c, {a, b}});
- }
- sort(lst.begin(), lst.end());
- for (int i = 0; i < lst.size(); i++) {
- int a, b, c;
- c = lst[i].ff;
- a = lst[i].ss.ff;
- b = lst[i].ss.ss;
- if (get(a) != get(b)) {
- ans += c;
- // cout << a << " " << b << " " << c << '\n';
- merge(a, b);
- }
- }
- cout << ans;
- }
- int main() {
- flash;
- int T = 1;
- // cin >> T;
- for (int _ = 1; _ <= T; ++_) {
- // cout << "Case " << i << ": ";
- press_F_();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement