if(*p!=dad){ dfs3(*p,k); maxd[k]=max(maxd[*p],maxd[k]); }
不能写成下面这种,会导致类似右子树取到左子树的最大深度这样的情况(因为左子树回溯到父节点时可能存在父节点那里)
if(*p!=dad){ dfs3(*p,k); } maxd[k]=max(maxd[*p],maxd[k]);