对于操作二,赛时想到了一种树形 DP 的做法,但是交上去不对,求问是哪里有问题。
#define big long long
big dp[100005];
void dfs(big u,big fa)
{
big flag = 1;
for(big i = head[u];i ;i = edge[i].next)
{
big v = edge[i].to;
if(v == fa) continue;
flag = 0;
dfs(v,u);
dp[u] = min({dp[v],v,dp[u]});
}
if(flag)
{
dp[u] = u;
}
}