UVA 11987 Almost Union-Find
来源:互联网 发布:linux设置目录的权限 编辑:程序博客网 时间:2024/06/05 09:00
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3138
题目大意:有几个集合,有三种操作,1操作是合并p和q所在的集合,2操作是将p移动到q所在的操作,3操作是输出p所在的集合的所有元素的和。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int mmax=200010;int kount[mmax],tree[mmax],sum[mmax],digit[mmax];int n,k,hehe;void init(){for(int i=1;i<=mmax;i++){tree[i]=sum[i]=digit[i]=i;kount[i]=1;}hehe=n;}int find(int x){return x==tree[x]?x:tree[x]=find(tree[x]);}void merge(int x,int y){int a=find(x);int b=find(y);if(a!=b){tree[a]=b;kount[b]+=kount[a];sum[b]+=sum[a];}}void move(int a){int z=find(digit[a]);kount[z]--;sum[z]-=a;digit[a]=++hehe;tree[hehe]=hehe;kount[hehe]=1;sum[hehe]=a;}int main(){while(~scanf("%d%d",&n,&k)){init();while(k--){int type,x,y;scanf("%d",&type);if(type==1){scanf("%d%d",&x,&y);merge(digit[x],digit[y]);}else if(type==2){scanf("%d%d",&x,&y);int a=find(digit[x]);int b=find(digit[y]);if(a!=b){move(x);merge(digit[x],digit[y]);}}else{int que;scanf("%d",&que);int a=find(digit[que]);printf("%d %d\n",kount[a],sum[a]);}}}}
阅读全文
0 0
- Uva-11987-Almost Union-Find
- UVA 11987 Almost Union-Find
- uva 11987 Almost Union-Find
- UVA 11987 - Almost Union-Find
- UVA 11987 Almost Union-Find
- UVA - 11987 Almost Union-Find
- UVA 11987 - Almost Union-Find
- UVa 11987 - Almost Union-Find
- UVA 11987 Almost Union-Find
- Almost Union-Find UVA 11987
- uva 11987 Almost Union-Find
- UVA 11987 Almost Union-Find
- uva 11987 Almost Union-Find
- Almost Union-Find UVA
- uva 11987 Almost Union-Find(加权并查集)
- uva 11987 - Almost Union-Find(并查集)
- UVA 11987 Almost Union-Find(并查集)
- uva 11987 Almost Union-Find(并查集)
- 腾讯art-template4,即vue后又获一利器
- Apache启动时报错Could not reliably determine the server's fully qualified domain name
- Qt多线程基础
- Super Sum
- redis使用列表(list)
- UVA 11987 Almost Union-Find
- 在win10下安装Tensorflow(CUDA8.0+cuDNN5.1)
- 【HDU 6092 Rikka with Subset】 思维 & 背包
- BST
- Navicat for MySQL Mac 破解版
- HDU6092 Rikka with Subset(01背包+思路)
- VS常见错误之一:error LNK2019: 无法解析的外部符号
- Noip 2014 提高组 解方程
- C++将链表划分为左边小,中间等,右边大于pivotKey的形式