不是很会证明复杂度,尤其是有递归的,希望有大牢可以说明一下
void dfs(int x, int minn) {
minn = min(minn, v[x]);
ans[x] = max(ans[x], v[x] - minn);
f[x] = minn;
for (int i = 0; i < p[x].size(); ++i) {
ans[p[x][i]] = max(ans[p[x][i]], ans[x]);
if (f[p[x][i]]) {
if (minn < f[p[x][i]])
dfs(p[x][i], minn);
else continue;
}
dfs(p[x][i], minn);
}
}