题目传送门

代码:

/*
code by: zstu wxk
time: 2019/03/01
*/
#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("testdata.in","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lch(x) tr[x].son[0]
#define rch(x) tr[x].son[1]
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL _INF = 0xc0c0c0c0c0c0c0c0;
const LL mod = (int)1e9+;
const int N = 1e5 + ; struct Node{
int son[], rt;
int val, pos, dis;
Node(){
son[] = son[] = rt = ;
dis = ;
}
}tr[N];
bool cmp(Node & t1, Node &t2){
if(t1.val == t2.val) return t1.pos < t2.pos;
return t1.val < t2.val;
}
int n, m;
int Find(int x){
if(x == tr[x].rt) return x;
return tr[x].rt = Find(tr[x].rt);
}
int Merge(int u, int v){
if(u == v) return u;
if(!u || !v) return u+v;
if(!cmp(tr[u], tr[v])) swap(u, v);
tr[u].son[] = Merge(tr[u].son[], v);
tr[ tr[u].son[] ].rt = u;
if(tr[tr[u].son[]].dis < tr[tr[u].son[]].dis) swap(tr[u].son[], tr[u].son[]);
tr[u].dis = tr[tr[u].son[]].dis + ;
return u;
}
int Pop(int u){
if(!u || tr[u].pos == -) return -;
tr[ tr[u].son[] ].rt = tr[u].son[];
tr[ tr[u].son[] ].rt = tr[u].son[];
tr[u].rt = Merge(tr[u].son[], tr[u].son[]);
tr[u].pos = -;
return tr[u].val;
}
void Ac(){
tr[].dis = -;
for(int i = ; i <= n; ++i){
scanf("%d", &tr[i].val);
tr[i].pos = i;
tr[i].rt = i;
}
int op, u, v;
for(int i = ; i <= m; ++i){
scanf("%d", &op);
if(op == ){
scanf("%d%d", &u, &v);
if(tr[u].pos == - || tr[v].pos == -) continue;
u = Find(u), v = Find(v);
if(u == v) continue;
Merge(u, v);
}
else {
scanf("%d", &u);
if(tr[u].pos == -){
puts("-1");
continue;
}
printf("%d\n", Pop(Find(u)));
}
}
}
int main(){
while(~scanf("%d%d", &n, &m)){
Ac();
}
return ;
}

最新文章

  1. Ubuntu杂记——链接ln的使用:创建和删除符号链接
  2. FixFFmpeg 修改官方编译的ffmpeg能在 XP 上运行的工具
  3. OC登陆界面登陆按钮动画
  4. jQuery理解之(一)动画与特效
  5. Android 网格布局短信发送界面
  6. 不错的nginx文章,找个时间好好看下。
  7. Visual Studio 2015 编译错误【错误 C4996 &#39;vsprintf&#39;: This function or variable may be unsafe. Consider using vsprintf_s instead. 】的解决方案
  8. 多校联赛2 Problem2 Warm up 求桥的数目+缩点后的树的直径 当时被不知道原因的爆栈爆到无语了。。
  9. UIImageView图片视图的基本概念和使用方法
  10. debian9.6修改系统语言
  11. 解决sqlite 删除记录后数据库文件大小不变
  12. 【转】Android开发:Service和Thread的关系
  13. 前后端分离的利器:fiddler的实用功能举例
  14. poj1637 Sightseeing tour(混合图欧拉回路)
  15. 03:open-falcon报警定制
  16. hadoop MR的一些文件归属(包括临时文件存储情况)
  17. 【代码笔记】Web-HTML-CSS
  18. excel 方框打钩
  19. cxf动态调用外部web service 报告异常java.lang.NoSuchFieldErr
  20. IntellJ IDEA 对于 Spring Boot2.0.2 配置文件application.properties 配置

热门文章

  1. CMD开放3389端口
  2. git之coding.net的使用
  3. redis分布式锁&amp;队列应用
  4. Thrift框架快速入门
  5. MySQL储存过程详解
  6. Spring入门(九):运行时值注入
  7. 100天搞定机器学习|day43 几张GIF理解K-均值聚类原理
  8. 网络安全攻击与防护--HTML学习
  9. java 线程池newFixedThreadPool
  10. python学习笔记(3)--函数、参数、变量、递归