UVA - 1329 Corporative Network 合作网络(并查集)
来源:互联网 发布:mysql employees表 编辑:程序博客网 时间:2024/05/16 06:53
大体题意:
有n 个结点,初始时每个结点的父节点都不存在。你的任务是执行一次I操作和E操作,格式如下:
I u,v 把结点u 的父节点设置为v,距离为|u-v|%1000 保证u没有父节点。
E u,询问u到根节点的距离!
思路:
并查集:
用d[u]表示u结点到根节点的距离。
每次E操作都初始化父节点和 距离!
每次I操作 都要查一下父节点,find,在find过程中更新d数组!
大体过程就是在递归返回的过程中更新d d[x] += d[pa[x]] !仔细想想这样正好全部加回去!!
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 200000 + 10;int fa[maxn];int d[maxn];int find(int u){ if (fa[u] == u)return u; int root = find(fa[u]); d[u] += d[fa[u]]; return fa[u] = root;}int main(){ int T; scanf("%d",&T); char cmd[20]; while(T--){ int n; memset(d,0,sizeof d); scanf("%d",&n); for (int i = 0; i <= n; ++i)fa[i] = i; while(scanf("%s",cmd) == 1 && cmd[0] != 'O'){ if (cmd[0] == 'E'){ int u; scanf("%d",&u); find(u); printf("%d\n",d[u]); continue; } int u,v; scanf("%d %d",&u,&v); fa[u] = v; d[u] = abs(u-v)%1000; } } return 0;}
0 0
- UVA - 1329 Corporative Network 合作网络(并查集)
- UVA 1329Corporative Network【并查集】
- UVA 1329 Corporative Network(并查集)
- UVa:1329 Corporative Network(带权并查集)
- UVa 1329 Corporative Network(并查集)
- 1329 - Corporative Network(并查集)
- UVa 1329 Corporative Network (加权并查集)
- UVA 1329 Corporative Network(并查集:路径压缩)
- UVa 1329 Corporative Network(带权并查集)
- uva 1329 - Corporative Network(数据结构:并查集)
- UVA 1329 - Corporative Network(带权并查集)
- uva 1329 - Corporative Network(加权并查集)
- LA3027:Corporative Network(并查集) uva 1329
- UVA 1329 Corporative Network——加权并查集
- LA 3027 Corporative Network 合作网络【并查集+路径压缩】
- Corporative Network(带权并查集)
- UVALive - 3027Corporative Network(带权并查集)
- poj 1962 Corporative Network(并查集)
- Android之JSON解析
- leetcode_c++:哈希:Valid Anagram(242)
- 互联网时代的社会语言学:基于SNS的文本数据挖掘
- java synchronized
- Android中直播视频技术探究之---基础知识大纲介绍
- UVA - 1329 Corporative Network 合作网络(并查集)
- 基本3D变换之World Transform, View Transform and Projection Transform
- GitHub上史上最全的iOS开源项目分类汇总
- java 版 异或加密
- POJ3267 The Cow Lexicon(DP)
- sdk
- 企业付款Openid
- 随机产生a-z一个字母
- Java核心基础(4) 异常相关