我的主要逻辑是这样写的,只能过16,不知道哪里错了
```cpp
int dfs(int u, int tog) {
// 有一个或者多个孩子,当前节点就找到最长链长度
vector<int> pls;
pls.resize(0);
for (int to : edges[u]) {
if (tog && a[to] >= a[u] || !tog && a[to] <= a[u]) {
pls.push_back(dfs(to, tog));
}
}
// size == 0 \\ 没有当前tog可用孩子确实应该这里处理
if (!pls.size()) return 1;
sort(pls.begin(), pls.end(), greater<int>{});
// cout << 'u' << u << '\n';
// for (int i : pls) cout << i << ' ';
// cout << '\n';
if (pls.size() >= 2) {
maxChainLen = max(maxChainLen, pls[0] + pls[1] + 1);
}
// size == 1
return pls[0] + 1;
}
```