Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <algorithm>#include <vector>using namespace std;int n;const int bign = 10033;int p[bign], q[bign];int sump[bign], sumq[bign];long long int dp[bign];vector<int> edgelist[bign];bool cmp(int a1,int b1){return (dp[a1] - p[a1] + q[a1] > dp[b1] - p[b1] + q[b1]);}void dfs(int u,int prev){for (int i=0; i<edgelist[u].size(); i++){int v = edgelist[u][i];if (v != prev){dfs(v, u);}}sort(edgelist[u].begin(), edgelist[u].end(), cmp);dp[u] = p[u];for (int i=0; i<edgelist[u].size(); i++){