Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <cstdio>using namespace std;int a[100010];vector<int> arr[100010];int du[100010];int fa[100010];long long ans;long long find(int z){if(du[z] == 0){return a[z];}long long mt=0,t=0;vector<int> ch = arr[z];for(int i=0;i<ch.size();i++){t = find(ch[i]);// cout<<ch[i]<<"---"<<t<<endl;if(t>mt){ans += i*(t-mt);mt = t;}else{ans += mt-t;}}