Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define int long long
- #define N 10005
- int curr[N],parent[N],sz[N];
- int find(int v)
- {
- if(v==parent[v]) return v;
- return parent[v]=find(parent[v]);
- }
- void uni(int a,int b)
- {
- a=find(a);
- b=find(b);
- if(a==b) return ;
- if(sz[a]<sz[b]) swap(a,b);
- sz[a]+=sz[b];
- parent[b]=a;
- curr[a]+=curr[b];
- }
- int32_t main()
- {
- int n,p;
- cin>>n;
- for(int i=1;i<=n;i++)
- {
- cin>>curr[i];
- parent[i]=i;
- sz[i]=1;
- }
- cin>>p;
- while(p--)
- {
- int a,b;
- cin>>a>>b;
- uni(a,b);
- }
- int ans=0;
- for(int i=1;i<=n;i++) ans=max(ans,curr[i]);
- cout<<ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement