用并查集维护联通性。对每个联通块维护一个平衡树。合并时启发式合并。比较懒,用了pb_ds。

 #include<cstdio>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;
tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> T[];
tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>::iterator it;
int num[],val[],fa[],rank[];
int n,m,q,x,y,f1,f2;
char op[];
int Res,Num;char C,CH[];
inline int G()
{
Res=;C='*';
while(C<''||C>'')C=getchar();
while(C>=''&&C<=''){Res=Res*+(C-'');C=getchar();}
return Res;
}
inline void P(int x)
{
Num=;while(x>)CH[++Num]=x%,x/=;
while(Num)putchar(CH[Num--]+);
putchar('\n');
}
void init()
{
for(int i=;i<=n;i++)
fa[i]=i;
}
int findroot(int x)
{
if(fa[x]==x)
return x;
int rt=findroot(fa[x]);
fa[x]=rt;
return rt;
}
void Union(const int &u,const int &v)
{
if(rank[u]<rank[v])
{
fa[u]=v;
for(it=T[u].begin();it!=T[u].end();it++)
T[v].insert((*it));
T[u].clear();
}
else
{
fa[v]=u;
for(it=T[v].begin();it!=T[v].end();it++)
T[u].insert((*it));
T[v].clear();
if(rank[u]==rank[v]) rank[u]++;
}
}
int main()
{
n=G();m=G();
init();
for(int i=;i<=n;i++)
{
val[i]=G();
T[i].insert(val[i]);
num[val[i]]=i;
}
for(int i=;i<=m;i++)
{
x=G();y=G();
f1=findroot(x),f2=findroot(y);
if(f1!=f2) Union(f1,f2);
}
q=G();
for(int i=;i<=q;i++)
{
scanf("%s",op);x=G();y=G();
if(op[]=='Q')
{
f1=findroot(x);
if(T[f1].size()<y) puts("-1");
else P(num[*T[f1].find_by_order(y-)]);
}
else
{
f1=findroot(x),f2=findroot(y);
if(f1!=f2) Union(f1,f2);
}
}
return ;
}

最新文章

  1. 如何让spring mvc web应用启动时就执行特定处理
  2. 友盟ionic多渠道自动签名app
  3. rest api设计的一般原则
  4. drupal7 form模板复写方法
  5. wordpress插入腾讯视频的方法
  6. 树形DP(Holiday&#39;s Accommodation HDU4118)
  7. gem
  8. chm文件访问提示:已取消到该网页的导航
  9. 总是你 2008-3 (献给L之一)
  10. MYI 文件内容
  11. poj 1236强连通图缩点
  12. HDOJ 4248 A Famous Stone Collector DP
  13. 打开phpmyadmin显示高级功能尚未完全设置部分功能未激活
  14. Sublime Text3介绍和插件安装——基于Python开发
  15. 理解Object.defineProperty函数中的get与set
  16. cookies相关概念
  17. webserver nginx / https / upstream
  18. mybatis 三剑客 generator配置 、mybatis plugin
  19. Java WebDriver 使用经验
  20. gcc,g++

热门文章

  1. PropertiesConfiguration的用法
  2. 几种list集合的区别
  3. jw player笔记二----修改logo
  4. 自己实现的JDBC工具类
  5. centos 防火墙关闭/开启
  6. vc6.0里使用lib(静态库)的方法
  7. linux内核分析笔记----中断和中断处理程序【转】
  8. Linux上Core Dump文件的形成和分析
  9. Map占用内存大小评估
  10. 获取struts迭代list在页面显示的数据