亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

【Bzoj2733】永無鄉

2019-11-10 16:51:26
字體:
來源:轉載
供稿:網友

2733: [HNOI2012]永無鄉

Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3031  Solved: 1592[Submit][Status][Discuss]

Description

永無鄉包含 n 座島,編號從 1 到 n,每座島都有自己的獨一無二的重要度,按照重要度可 以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間由巨大的橋連接,通過橋可以從一個島 到達另一個島。如果從島 a 出發經過若干座(含 0 座)橋可以到達島 b,則稱島 a 和島 b 是連 通的?,F在有兩種操作:B x y 表示在島 x 與島 y 之間修建一座新橋。Q x k 表示詢問當前與島 x連通的所有島中第 k 重要的是哪座島,即所有與島 x 連通的島中重要度排名第 k 小的島是哪 座,請你輸出那個島的編號。  

Input

輸入文件第一行是用空格隔開的兩個正整數 n 和 m,分別 表示島的個數以及一開始存在的橋數。接下來的一行是用空格隔開的 n 個數,依次描述從島 1 到島 n 的重要度排名。隨后的 m 行每行是用空格隔開的兩個正整數 ai 和 bi,表示一開始就存 在一座連接島 ai 和島 bi 的橋。后面剩下的部分描述操作,該部分的第一行是一個正整數 q, 表示一共有 q 個操作,接下來的 q 行依次描述每個操作,操作的格式如上所述,以大寫字母 Q 或B 開始,后面跟兩個不超過 n 的正整數,字母與數字以及兩個數字之間用空格隔開。 對于 20%的數據 n≤1000,q≤1000  對于 100%的數據 n≤100000,m≤n,q≤300000  

Output

對于每個 Q x k 操作都要依次輸出一行,其中包含一個整數,表 示所詢問島嶼的編號。如果該島嶼不存在,則輸出-1。  

Sample Input

5 14 3 2 5 1 1 2 7Q 3 2 Q 2 1 B 2 3 B 1 5 Q 2 1 Q 2 4 Q 2 3

Sample Output

-12512

算法:平衡樹啟發式合并。心力交瘁的渣羊er出現了,自從昨天說HNOI好水之后遭報應,碰到了一道想死的題(神犇們不要鄙視,本人水平有限,雖然在你們是一眼題QwQ)??瓤龋春芏嗳硕际遣⒉榧S護連通塊,每個連通塊內建一個權值線段樹(可以查排名的那種),然后只用維護合并與查詢就行。但還是基于水平原因,Zhayan9決定還是用Treap+啟發式合并水過...代碼也有點玄學,還是貼過來吧...
#include <cstdio>#include <algorithm>#include <iostream>using namespace std;const int maxx = 100000 + 100;int n,m,x,y,root,t;int father[maxx];char flag[2];struct Node{	int lc,rc;	int v,fix;	int size;}T[maxx];inline int read(){    int x=0,f=1;char c=getchar();    while(c>'9'||c<'0') {if(c == '-') f=-1; c=getchar();}    while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();}    return x*f;}void update(int i){    T[i].size = T[T[i].lc].size + T[T[i].rc].size + 1;}void lturn(int &i){    int t = T[i].rc;    T[i].rc = T[t].lc;    T[t].lc = i;    T[t].size = T[i].size;    update(i);    i = t;}void rturn(int &i){    int t = T[i].lc;    T[i].lc = T[t].rc;    T[t].rc = i;    T[t].size = T[i].size;    update(i);    i = t;}void insert(int &i,int x){    if(i == 0){		i = x;		T[i].size = 1;		T[i].lc = T[i].rc = 0;		T[i].fix = rand();		return;    }    T[i].size++;    if(T[x].v < T[i].v){		insert(T[i].lc,x);		if(T[T[i].lc].fix < T[i].fix) rturn(i);	}    if(T[x].v > T[i].v){		insert(T[i].rc,x);		if(T[T[i].rc].fix < T[i].fix) lturn(i);	}}int Query_num(int i,int x){    int rank = T[T[i].lc].size;    if(rank+1 == x) return i;    else if(rank >= x) return Query_num(T[i].lc,x);    else return Query_num(T[i].rc,x-rank-1);}int find(int x){	if(father[x]!=x) father[x] = find(father[x]);    return father[x]; }void merge(int x,int y){	if(y == 0) return;	merge(x,T[y].lc);	merge(x,T[y].rc);	insert(x,y);}void unionn(int x,int y){	int r1=find(x),r2=find(y);	if(T[r1].size > T[r2].size) x^=y^=x^=y;	father[r1]=r2;	merge(r2,r1);} int main(){	n = read();m = read();	for(int i=1;i<=n;i++)		T[i].v = read(),T[i].size = 1,father[i] = i;	for(int i=1;i<=m;i++)		x = read(),y = read(),unionn(x,y);	t = read();	while( t-- ){		scanf("%s",flag);		x = read();y = read();		if(flag[0] == 'B') unionn(x,y);		else{			int fx = find(x);			if(T[fx].size < y) PRintf("-1/n");			else printf("%d/n",Query_num(fx,y));		}	}	return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久嫩草影院一区二区| 久久综合国产精品台湾中文娱乐网| 精品久久久久久久久久国产| 69av在线视频| 欧美精品中文字幕一区| 国产精品福利在线观看网址| 日韩中文字幕网| 久久精品视频在线| 日韩av三级在线观看| 久久夜色精品国产欧美乱| 精品国偷自产在线视频99| 精品国产一区二区三区久久狼黑人| 午夜精品国产精品大乳美女| 日本精品视频在线观看| 日韩视频一区在线| 中文字幕久热精品视频在线| 欧美亚洲视频在线看网址| 国产精品69精品一区二区三区| 色av吧综合网| 欧美在线欧美在线| 国产裸体写真av一区二区| 亚洲精品视频网上网址在线观看| 91亚洲国产精品| 欧美在线视频免费播放| 久久精品免费播放| 91亚洲精华国产精华| 成人自拍性视频| 日本道色综合久久影院| 久久久国产影院| 97人洗澡人人免费公开视频碰碰碰| 国产精品天天狠天天看| 8090理伦午夜在线电影| 狠狠做深爱婷婷久久综合一区| 久久久精品亚洲| 久久久女人电视剧免费播放下载| 成人国产精品免费视频| 亚洲国产日韩欧美在线图片| 这里只有精品久久| 九九久久精品一区| 欧美激情二区三区| 亚洲欧美国产日韩天堂区| 成人羞羞国产免费| 自拍视频国产精品| 成人日韩av在线| 国产日产欧美a一级在线| 91精品国产自产在线观看永久| 精品亚洲一区二区三区| 久久69精品久久久久久久电影好| 91久久久久久久| 欧美日韩国产色视频| 国产精品成人一区二区三区吃奶| 亚洲女人被黑人巨大进入| 成人激情视频免费在线| 亚洲欧洲成视频免费观看| 精品国产一区二区三区久久| 亚洲欧洲午夜一线一品| 欧美激情a在线| 成人做爰www免费看视频网站| 欧美成年人在线观看| 乱亲女秽乱长久久久| 久久久久国产精品一区| 国产精品高潮呻吟久久av野狼| 欧美精品第一页在线播放| 中文字幕av一区二区三区谷原希美| 欧美日韩精品在线| 69精品小视频| 精品少妇一区二区30p| 91精品国产色综合| 九九热在线精品视频| 亚洲男人天堂九九视频| 国产精品久久久久久久久久三级| 国色天香2019中文字幕在线观看| 国内外成人免费激情在线视频| 最新亚洲国产精品| 欧美一区二区三区免费视| 日韩av片电影专区| 成人中心免费视频| 欧美日韩另类在线| 97精品一区二区视频在线观看| 中文字幕日韩免费视频| 欧美成人精品不卡视频在线观看| 欧美午夜精品久久久久久久| 国产午夜精品一区二区三区| 欧美大全免费观看电视剧大泉洋| 国产视频综合在线| 亚洲人午夜精品免费| 国语自产精品视频在线看一大j8| 亚洲天堂av在线免费观看| 精品亚洲一区二区三区在线观看| 久久久精品免费| 亚洲自拍偷拍视频| 国产精品视频一区二区高潮| 亚洲国产成人久久| 在线电影av不卡网址| 欧美一级电影在线| 原创国产精品91| 中文字幕国产日韩| 日韩一区二区久久久| 色婷婷亚洲mv天堂mv在影片| 久久综合伊人77777蜜臀| 中文字幕9999| 亚洲免费人成在线视频观看| 欧美裸体xxxx极品少妇| 欧美裸体视频网站| 亚洲第一色中文字幕| 欧美中文字幕视频在线观看| 国产精品电影久久久久电影网| 中文在线资源观看视频网站免费不卡| 欧美色欧美亚洲高清在线视频| 精品视频在线播放色网色视频| zzijzzij亚洲日本成熟少妇| 欧美日韩在线第一页| 欧美www在线| 国产精品极品尤物在线观看| 欧美亚洲国产日韩2020| 免费不卡在线观看av| 欧美性高跟鞋xxxxhd| 亚洲精品国产成人| 欧美亚洲在线播放| 久久久精品999| 精品国产一区二区三区久久久| 在线日韩日本国产亚洲| 日韩www在线| 亚洲无av在线中文字幕| 国产亚洲xxx| 欧美巨大黑人极品精男| 久久久免费高清电视剧观看| 91精品国产色综合久久不卡98| 国产97在线|日韩| 国产亚洲欧美一区| 日韩av网站大全| 色www亚洲国产张柏芝| 一区二区三区四区在线观看视频| 国产深夜精品福利| 色综合久综合久久综合久鬼88| 久久久久久综合网天天| 深夜福利亚洲导航| 色天天综合狠狠色| 欧美午夜精品久久久久久人妖| 欧美亚洲国产视频小说| 日韩福利视频在线观看| 精品二区三区线观看| 亚洲欧美日韩中文在线制服| 一区二区亚洲精品国产| 国产精品99久久99久久久二8| 在线看欧美日韩| 亚洲国产精品久久久久久| 欧美精品制服第一页| …久久精品99久久香蕉国产| 久久精品精品电影网| 亚洲成人av中文字幕| 日韩欧美亚洲成人| 美女视频久久黄| 久久网福利资源网站| 精品亚洲一区二区三区在线观看| 亚洲精品二三区| 亚洲免费视频网站| 欧美日韩亚洲天堂| 欧美性猛交xxxx黑人猛交| 久久久久久久久久亚洲| 波霸ol色综合久久| 最近2019好看的中文字幕免费| 成人网在线视频| 日韩乱码在线视频|