nq1s788

прима за O(nm)

Nov 16th, 2025
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <set>
  3. #include <vector>
  4. #include <deque>
  5. #include <map>
  6. #include <cmath>
  7. #include <random>
  8. #include <algorithm>
  9.  
  10. #define se second
  11. #define fi first
  12. #define mp make_pair
  13. #define pb push_back
  14.  
  15. typedef long long ll;
  16. typedef long double ld;
  17.  
  18. using namespace std;
  19.  
  20. int main() {
  21.     int n, m;
  22.     cin >> n >> m;
  23.     vector<pair<int, pair<int, int>>> vert(m);
  24.     for (int i = 0; i < m; i++) {
  25.         int x, y, w;
  26.         cin >> x >> y >> w;
  27.         x--, y--;
  28.         vert[i] = {w, {x, y}};
  29.     }
  30.     vector<bool> used(n, false);
  31.     used[0] = true;
  32.     vector<pair<int, int>> ostov;
  33.     int answ = 0;
  34.     for (int _ = 0; _ < n - 1; _++) {
  35.         pair<int, pair<int, int>> mn = {10000000, {-1, -1}};
  36.         for (int i = 0; i < m; i++) {
  37.             if (used[vert[i].se.fi] != used[vert[i].se.se]) {
  38.                 mn = min(mn, vert[i]);
  39.             }
  40.         }
  41.         ostov.push_back(mn.se);
  42.         answ += mn.fi;
  43.         used[mn.se.fi] = true;
  44.         used[mn.se.se] = true;
  45.     }
  46.     cout << answ << '\n';
  47.     for (auto e : ostov) {
  48.         cout << e.fi + 1 << ' ' << e.se + 1 << '\n';
  49.     }
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment