看很多人题解的dfs还要传上一个节点,还有考虑一堆,蒟蒻给像我一样的蒟蒻讲一讲侥幸过的代码 vector<int> r[1001]; int w[1001]; int dp[1001]; void dfs(int x) { if (r[x].empty()) { w[x]=1; } else { for (auto y: r[x]) { //遍历子节点 dfs(y); w[x]+=w[y]; } w[x]++;//记得给自己也算 } } int main() { int n; while (~scanf("%d",&n)) { for (int i = ...