博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NOI 2002】银河英雄传说(带权并查集)
阅读量:4935 次
发布时间:2019-06-11

本文共 1144 字,大约阅读时间需要 3 分钟。

(小声bb 我觉得带权并查集比较玄妙) 

很容易想到用并查集来维护

设size表示当前队列的数量(以i为队头的数量),to_root表示当前节点到祖宗的距离

则对于每一个飞船,它到队头的距离,就等于它到它祖先的距离加上它祖先到队头的距离,而它的祖先到队头的距离,也可以变成类似的。可以在getfather时顺便维护

哎。。还有多久才能停课啊。。真的不想上文化课了。。。。。

#include
#define N 30005using namespace std;int father[N],to_root[N],size[N];inline int getfather(int x){ if(father[x]==x) return x; int ff=father[x]; father[x]=getfather(father[x]); to_root[x]+=to_root[ff]; return father[x];}int main(){ ios::sync_with_stdio(false); cin.tie(NULL),cout.tie(NULL); for(int i=1;i<=30001;i++) {father[i]=i;size[i]=1;} int T; cin>>T; while(T--) { char opt; int x,y,fx,fy; cin>>opt>>x>>y; fx=getfather(x),fy=getfather(y); if(opt=='M') { father[fx]=fy; to_root[fx]=size[fy]; size[fy]+=size[fx]; size[fx]=0; } if(opt=='C') { if(fx!=fy) { cout<<"-1"<<'\n'; continue; } cout<
<<'\n'; } } return 0;}

 

转载于:https://www.cnblogs.com/Patrickpwq/articles/9757874.html

你可能感兴趣的文章
percent的用法
查看>>
中文词频统计
查看>>
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
Java Win自动环境配置脚本
查看>>
springMVC+Java验证码完善注册功能
查看>>
在虚拟机中的Linux系统搭建ftp服务器,使用nginx代理,实现外网访问ftp服务器的文件——centos6.5系统中的nginx安装及配置...
查看>>
css3媒体查询简单实例
查看>>
java-properties配置文件
查看>>
算法学习-哈希表
查看>>
python操作mysql
查看>>
javascript 学习1
查看>>
Angular应用架构设计-3:Ngrx Store
查看>>
<a>标签文件下载文件名乱码问题
查看>>
HTTP抓包
查看>>
Python项目中使用配置文件
查看>>
html5的学习日志
查看>>
Python数据分析_Pandas01_数据框的创建和选取
查看>>
RESTful-rest_framework应用第一篇
查看>>
RMQ 总结
查看>>