UVA11987- Almost Union-Find
来源:互联网 发布:网络主播文儿的歌曲 编辑:程序博客网 时间:2024/04/19 08:21
本题比较难处理的是删除之后根节点的归属,所以要开2倍的数组,如
void init() { for (int i = 1; i <= n; i++) { f[i] = i + n; f[i + n] = i + n; sum[i + n] = i; cnt[i + n] = 1; }}
再开两个数组分别记录集合元素的个数,以及集合元素的和。
#include <iostream>#include <cstdio>#include <cstring>#define N 100005using namespace std;int f[N * 2], cnt[N * 2], sum[N * 2];int n, m, a, b, k;void init() { for (int i = 1; i <= n; i++) { f[i] = i + n; f[i + n] = i + n; sum[i + n] = i; cnt[i + n] = 1; }}int getFather(int x) { return x == f[x] ? x : f[x] = getFather(f[x]);}void Delete(int a, int b) { int pa = getFather(a); int pb = getFather(b); if (pa != pb) { f[a] = getFather(pb); sum[pa] -= a; sum[pb] += a; cnt[pa]--; cnt[pb]++; }}void Union(int a, int b) { int pa = getFather(a); int pb = getFather(b); if (pa != pb) { f[pa] = getFather(pb); sum[pb] += sum[pa]; cnt[pb] += cnt[pa]; }}int main() { while (scanf("%d %d", &n, &m) != EOF) { init(); for (int i = 0; i < m; i++) { scanf("%d", &k); if (k == 1) { scanf("%d %d", &a, &b); Union(a, b); } else if (k == 2) { scanf("%d %d", &a, &b); Delete(a, b); } else if (k == 3) { scanf("%d", &a); int pa = getFather(a); printf("%d %d\n", cnt[pa], sum[pa]); } } } return 0;}
0 0
- UVa11987 Almost Union-Find
- UVA11987- Almost Union-Find
- UVA11987:Almost Union-Find
- UVa11987 Almost Union-Find
- 【UVA11987】Almost Union-Find
- Uva11987 Almost Union-Find 并查集带删除
- UVA11987--Almost Union-Find--带权并查集
- uva11987 - Almost Union-Find 并查集删除元素
- UVA11987 - Almost Union-Find (并查集带删除)
- UVA11987:Almost Union-Find (并查集的删除)
- uva11987 Almost Union-Find(可删除元素的并查集)
- Almost Union-Find
- Almost Union-Find ()
- Almost Union-Find UVA
- Almost Union-Find
- Uva-11987-Almost Union-Find
- UVA 11987 Almost Union-Find
- uva 11987 Almost Union-Find
- Json lib 对于hibernate的懒加载的存在问题的解决方法
- 各个浏览器同一时间对同一域名下的请求的数量限制
- 关于js的全局对象
- STM32 定时器浅谈_1
- Java设计模式研究之策略模式
- UVA11987- Almost Union-Find
- struts2+jqury ajax问题汇总与解决办法
- 3.线性表的应用-一元多项式的计算
- C#中如何获取字体类型,颜色,和大小.
- 异常:System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.mshtml
- ios申请真机调试( xcode 5)详细解析
- 2014 第十一届浙江省程序设计竞赛
- Cocos2x 适配
- 多线程__下