UVa 1329 Corporative Network (加权并查集)
2014-03-06 08:30
351 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=497&page=show_problem&problem=4075
由于维护的是树上某一点到根节点的距离,所以可以在find函数中添加一pushdown函数以便更新某点到根的距离。
完整代码:
由于维护的是树上某一点到根节点的距离,所以可以在find函数中添加一pushdown函数以便更新某点到根的距离。
完整代码:
/*0.062s*/ #include<bits/stdc++.h> using namespace std; const int maxn = 20005; int pa[maxn], d[maxn]; inline void pushdown(int x) { d[x] += d[pa[x]]; } int find(int x) { if (pa[x]) { int root = find(pa[x]); pushdown(x); ///在递归后调用,以便从根节点往下更新值 return pa[x] = root; } return x; } int main() { //freopen("in.txt","r",stdin); int T, u, v; char op; scanf("%d", &T); while (T--) { memset(d, 0, sizeof(d)); memset(pa, 0, sizeof(pa)); scanf("%*d"); getchar(); while ((op = getchar()) != 'O') { if (op == 'E') { scanf("%d", &u); find(u); printf("%d\n", d[u]); } else { scanf("%d%d", &u, &v); pa[u] = v; d[u] = abs(u - v) % 1000; } getchar(); } } return 0; }
相关文章推荐
- Corporative Network UVA - 1329 加权并查集(压缩路径优化)
- uva 1329 - Corporative Network(加权并查集)
- C - Corporative Network UVA - 1329 -加权并查集
- Corporative Network UVA - 1329 加权并查集
- Corporative Network UVA - 1329 加权并查集
- uva12232 - Exclusive-OR 加权并查集
- UVA - 1329 Corporative Network(加权并查集)
- UVALive 4487 Exclusive-OR 加权并查集神题
- uva 1329 - Corporative Network(数据结构:并查集)
- UVA - 1329 Corporative Network 合作网络(并查集)
- uva1329 Corporative Network(并查集:路径压缩)
- UVALIVE 4487 Exclusive-OR(加权并查集)
- uva 11987 Almost Union-Find(加权并查集)
- UVA-1329 - Corporative Network(并查集)
- UVA 1329 Corporative Network【并查集】
- uva 12232 - Exclusive-OR(加权并查集)
- UVA 1329 Corporative Network【并查集】
- HDU 3234 | UValive 4487 - Exclusive-OR (加权并查集)
- UVA 1329 Corporative Network(并查集)
- UVA 1329 - Corporative Network(带权并查集)