POJ 3237 Tree
题目链接
就多一个取负操作,所以线段树结点就把最大和最小值存下来,每次取负的时候,最大和最小值取负后,交换即可
代码:
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 10005;
const int INF = 0x3f3f3f3f;
int dep[N], fa[N], son[N], sz[N], top[N], id[N], idx, val[N];
int first[N], next[N * 2], vv[N * 2], en;
struct Edge {
int u, v, val;
Edge() {}
Edge(int u, int v, int val) {
this-&g......
阅读全文