Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- //#include <ext/pb_ds/assoc_container.hpp>
- using namespace std;
- #define f(i,a,n) for(int i = a; i < n; i++)
- #define pb(x) push_back(x)
- vector < vector < int > > v(100034);
- int vis[100123] ={0};
- int bn_gya_bsdka[1000000];
- vector < int > s;
- int arr[100012] = {0};int res = 0,ans = 1000000000;
- int dfs(int top){
- vis[top] = 1;int sum = 0;
- // if(v[top].size() == 1){arr[top] = bn_gya_bsdka[top];return bn_gya_bsdka[top];}
- for(auto i : v[top]){
- if(!vis[i]){
- sum += dfs(i);;
- //dfs(i);
- }
- }
- // cout << top << ' ' << sum << '\n';
- if(top != 1)
- ans = min(ans,abs(res-2*(sum + bn_gya_bsdka[top])));
- arr[top] = sum + bn_gya_bsdka[top];
- return sum + bn_gya_bsdka[top];
- }
- void dfs1(int i){
- vis[i] = 1;
- cout << i << ' ';
- for(auto j : v[i]){
- if(!vis[j])dfs1(j);
- }
- }
- int main(){
- int n;
- cin >> n;
- //vector < pair < int, int > > v;
- f(i,0,n)cin >> bn_gya_bsdka[i+1],res += bn_gya_bsdka[i+1];
- vector < pair < int, int > > p;
- int l, r;
- f(i,0,n){
- cin >> l >> r;
- // p.push_back({l,r});
- v[l].pb(r),v[r].pb(l);
- }
- int y = dfs(1);
- cout << ans;
- return 0;
- }
Add Comment
Please, Sign In to add comment