Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define be(v) (v).begin(), (v).end()
  5. #define sz(v) v.size()
  6. #define pb push_back
  7. #define mk make_pair
  8. #define oo 100010
  9. #define s second
  10. #define f first
  11.  
  12. int p,r,a,b,c,visi[1000],pai[100];
  13. vector<pair<int,pair<int,int> > > vv;
  14. vector<vector<int> > g;
  15.  
  16. void dfs(int u){
  17.     visi[u] = 1;
  18.     for(int k=0;k<g[u].size();k++){
  19.         if(visi[g[u][k]] == 0){
  20.             visi[g[u][k]] = 1;
  21.             dfs(g[u][k]);
  22.         }
  23.     }
  24. }
  25.  
  26. int find(int u){
  27.     return pai[u] == u ? u:pai[u] = find(pai[u]);
  28. }
  29.  
  30. int kruskal(){
  31.    
  32.     int fa,fb,soma = 0;
  33.     sort(vv.begin(),vv.end());
  34.    
  35.     for(int i=0;i<vv.size();i++){
  36.        
  37.         fa = find(vv[i].s.f);
  38.         fb = find(vv[i].s.s);
  39.        
  40.         if(fa != fb){
  41.             pai[fb] = fa;
  42.             soma += vv[i].f;
  43.         }
  44.     }
  45.  
  46.     return soma;
  47. }
  48.  
  49.  
  50. int main() {
  51.  
  52.     while(cin >> p >> r){
  53.  
  54.         vv.clear();
  55.         g.assign(p+10,vector<int>());
  56.         memset(visi,0,sizeof visi);
  57.         for(int k=1;k<p+1;k++) pai[k] = k;
  58.  
  59.         for(int k=0;k<r;k++){
  60.             cin >> a >> b >> c;
  61.             vv.pb(mk(c,mk(a,b)));
  62.             g[a].pb(b);
  63.             g[b].pb(a);
  64.         }
  65.  
  66.         int cont = 0;
  67.         for(int k=1;k<p+1;k++){
  68.             if(visi[k] == 0){
  69.                 dfs(k);
  70.                 cont++;
  71.             }
  72.         }
  73.  
  74.         if(cont == 1) cout << kruskal() << endl;
  75.         else cout << "impossivel\n";
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement