Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define mx 100009
  4. #define ll long long int
  5. vector<ll>v[mx];
  6. ll n,m,cr,cl;
  7. bool vis[mx];
  8. ll ans[mx];
  9. ll res=0;
  10. ll dfs(int s)
  11. {
  12.     vis[s]=true;
  13.     for(ll i=0;i<v[s].size();i++){
  14.         if(vis[v[s][i]]==false){
  15.             ans[v[s][i]]=min(ans[s]+cr,ans[s]+cl);
  16.             ans[s]=ans[v[s][i]];
  17.             res=max(res,ans[v[s][i]]);
  18.             vis[v[s][i]]=true;
  19.             dfs(v[s][i]);
  20.         }
  21.     }
  22.     return res;
  23. }
  24. int main()
  25. {
  26.     ll q;
  27.     cin>>q;
  28.     while(q--){
  29.         memset(vis,false,sizeof(vis));
  30.         memset(v,0,sizeof(v));
  31.         memset(ans,0,sizeof(ans));
  32.         cin>>n>>m>>cl>>cr;
  33.         for(int i=0;i<m;i++){
  34.             ll a,b;
  35.             cin>>a>>b;
  36.             v[a].push_back(b);
  37.             v[b].push_back(a);
  38.         }
  39.         ll ppp=0;
  40.         for(int i=1;i<=n;i++){
  41.             if(vis[i]==false){
  42.                 ans[i]=cl;
  43.                 res=ans[i];
  44.                 ppp+=dfs(i);
  45.             }
  46.         }
  47.         cout<<ppp<<endl;
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement