Advertisement
at3107

C

Feb 6th, 2021
462
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define N 10005
  5. int curr[N],parent[N],sz[N];
  6.  
  7. int find(int v)
  8. {
  9.     if(v==parent[v]) return v;
  10.     return parent[v]=find(parent[v]);
  11. }
  12.  
  13. void uni(int a,int b)
  14. {
  15.     a=find(a);
  16.     b=find(b);
  17.     if(a==b) return ;
  18.     if(sz[a]<sz[b]) swap(a,b);
  19.     sz[a]+=sz[b];
  20.     parent[b]=a;
  21.     curr[a]+=curr[b];
  22. }
  23. int32_t main()
  24. {
  25.     int n,p;
  26.     cin>>n;
  27.     for(int i=1;i<=n;i++)
  28.     {
  29.         cin>>curr[i];
  30.         parent[i]=i;
  31.         sz[i]=1;
  32.     }
  33.     cin>>p;
  34.     while(p--)
  35.     {
  36.         int a,b;
  37.         cin>>a>>b;
  38.         uni(a,b);
  39.     }
  40.     int ans=0;
  41.     for(int i=1;i<=n;i++) ans=max(ans,curr[i]);
  42.     cout<<ans;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement