Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <algorithm>using namespace std;const int MAX_WALLET = 200000000;class Node {public:int p,q,pt,qt,vis;vector<int> sons;Node() {vis = 0;}};vector<Node> nodes;void dfs(int rt) {nodes[rt].vis = 1;int wallet = MAX_WALLET;int minWallet = MAX_WALLET;vector<int> sons;for(int i : nodes[rt].sons) {if(nodes[i].vis) continue;dfs(i);sons.push_back(i);}sort(sons.begin(),sons.end(),[](int a,int b){return nodes[a].qt > nodes[b].qt;