Advertisement
Guest User

Untitled

a guest
Jun 25th, 2022
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #pragma GCC target( "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  2. #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
  3.  
  4. #include <bits/stdc++.h>
  5.  
  6. using namespace std;
  7.  
  8. #define speed ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  9. #define pb push_back
  10. #define mp make_pair                                
  11. #define F first
  12. #define S second
  13. #define sz(x) (int)(x.size())                        
  14. #define all(x) x.begin(), x.end()        
  15.  
  16. typedef long long ll;
  17. typedef unsigned long long ull;
  18.  
  19.  
  20. const ll INF = LLONG_MAX;
  21. const int inf = INT_MAX;
  22. const int N = 3e5+5;
  23. const int MOD = 1e9+7;
  24. const double EPS = 1e-9;                
  25.  
  26. vector <vector <pair <ll, ll> > > g(N);
  27. vector <ll> mins(N, INF);
  28. bool used[N];
  29.  
  30. void solve(){
  31.     ll n, m, u, v, w, st = -1, ans = 0;
  32.     set <ll> se;
  33.     vector <ll> vert;
  34.     cin >> n >> m;            
  35.     while(m--){
  36.         cin >> u >> v >> w;
  37.         g[u].pb({v, w});
  38.         g[v].pb({u, w});
  39.         if(st == -1)
  40.             st = u;
  41.         mins[u] = min(mins[u], w);
  42.         mins[v] = min(mins[v], w);
  43.         se.insert(u);
  44.         se.insert(v);
  45.     }
  46.  
  47.     vert.insert(vert.begin(), all(se));  
  48.  
  49.     mins[st] = 0;
  50.                
  51.     for(int i = 0; i < n; i++){
  52.         ll v = -1;
  53.         for(int j = 0; j < n; j++)
  54.             if(!used[vert[j]] && (v == -1 || mins[vert[j]] < mins[v]))
  55.                 v = vert[j];
  56.  
  57.         used[v] = 1;
  58.                          
  59.         for(auto x : g[v]){
  60.             ll to = x.F, len = x.S;
  61.             if(len < mins[to])
  62.                 mins[to] = len;
  63.            
  64.         }
  65.     }
  66.  
  67.  
  68.     for(int i = 0; i < n; i++)
  69.         ans += mins[vert[i]];
  70.  
  71.     cout << ans << '\n';
  72. }
  73.    
  74. int main(){
  75.     speed;      
  76.  
  77.     int T = 1;
  78.                  
  79.    
  80.     while(T--)
  81.         solve();
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement