首页 > 代码库 > LA 3027 Corporative Network(并查集)
LA 3027 Corporative Network(并查集)
有n个点,一开始都是孤立的,然后有I,E两种操作
I u v,把u的父节点设为v,距离为abs(u-v) % 1000,保证u之前没有父节点
E 询问u到根节点的距离
#include<iostream>#include<cmath>using namespace std;const int maxn=2e4+5;int par[maxn],dis[maxn];void init(int n){ for(int i=0;i<=n;i++) { par[i]=i; dis[i]=0; }}int find(int x){ if(x==par[x]) return x; int root=find(par[x]); dis[x]+=dis[par[x]]; return par[x]=root;}int main(){ int t; cin>>t; while(t--) { int n; cin>>n; init(n); char s[5]; while(cin>>s,s[0]!=‘O‘) { int p,q; if(s[0]==‘E‘) { cin>>p; find(p); cout<<dis[p]<<endl; } if(s[0]==‘I‘) { cin>>p>>q; par[p]=q; dis[p]=abs(p-q)%1000; } } } return 0;}
LA 3027 Corporative Network(并查集)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。