dp[u][0]表示不选u时在以u为根的子树中最大人数,dp[u][1]则是选了u后的最大人数: f[u][0]表示不选u时的唯一性,f[u][1]是选了u后的唯一性,值为1代表唯一,0代表不唯一. 当不选u时,u的子节点v可选可不选,dp[u][0]+=max(dp[v][0],dp[v][1]),再根据所选判断f[u][0]: 当选u时,u的子节点都不可选,dp[u][1]+=dp[v][0],再判断f[u][1]: 在这里可以用map将人名映射为数字,map<string,int> mp…