• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            #include? < iostream >

            using ? namespace ?std;

            int ?n,?m;
            #define ?N??200010
            #define ?lowbit(x)??(?(x)&(-(x))?)

            struct ?TArray{
            ????
            int ?cnt[N];
            ????TArray(){?init();?}
            ????
            void ?update(? int ?p,? int ?v?){
            ????????
            for (? int ?x = ?p;?x <= ?n;?cnt[x] += ?v,?x += ?lowbit(x)?);?}
            ????
            int ??sum(? int ?p?){
            ????????
            int ?x = ?p,?s = ? 0 ;
            ????????
            for (?;?x;?s += ?cnt[x],?x -= ?lowbit(x)?);
            ????????
            return ?s;?}
            ????
            int ??rank(? int ?k?){
            ????????k
            = ?sum(n) + ? 1 - ?k;
            ????????
            int ?left = ? 1 ,?right = ?n;
            ????????
            while (?left + ? 1 < ?right?){
            ????????????
            int ?m = ?(left + ?right) >> ? 1 ;
            ????????????
            int ?s = ?sum(m);
            ????????????
            if (?s >= ?k?)?right = ?m;
            ????????????
            else ????????left = ?m;
            ????????}
            ????????
            if (?sum(left) >= ?k?)? return ?left;
            ????????
            return ?right;
            ????}
            ????
            void ?init(){?? for ( int ?i = ? 0 ;?i <= ?n;? ++ i?)?cnt[i] = ? 0 ;?}
            };

            TArray?tay;
            struct ?U_find{
            ????
            int ?find[N],?num[N];
            ????U_find(){?clear();}
            ????
            int ?parent(? int ?t?){?
            ????????
            int ?u = ?t,?v;??? while (?u != ?find[u]?)?u = ?find[u];
            ????????
            while (?t != ?u?)?{?v = ?find[t];?find[t] = ?u;?t = ?find[v];?}
            ????????
            return ?u;??}
            ????
            bool ?is_friend(? int ?u,? int ?v?){? return ?parent(u) == ?parent(v);?}
            ????
            void ?set_friend(? int ?u,? int ?v?){
            ????????
            int ?a = ?parent(u),?b = ?parent(v);
            ????????
            if (?a == ?b?)? return ;
            ????????
            if (?num[a] > ?num[b]?)?{?
            ????????????find[b]
            = ?a;??
            ????????????tay.update(?num[b],?
            - 1 ?);
            ????????????tay.update(?num[a],?
            - 1 ?);
            ????????????num[a]
            += ?num[b];
            ????????????tay.update(?num[a],?
            1 ?);
            ????????}
            ????????
            else ?{
            ????????????find[a]
            = ?b;
            ????????????tay.update(??num[a],?
            - 1 ?);
            ????????????tay.update(??num[b],?
            - 1 ?);
            ????????????num[b]
            += ?num[a];
            ????????????tay.update(?num[b],?
            1 ?);
            ????????}
            ????}
            ????
            void ?clear(){? for (? int ?i = ? 0 ;?i < ?N;? ++ i?)?find[i] = ?i,?num[i] = ? 1 ;?}
            };

            U_find?uf;

            int ?main(){
            ????scanf(
            " %d%d " , & n, & m?);
            ????tay.update(?
            1 ,?n?);
            ????
            ????
            while (?m -- ?){
            ????????
            int ?t,?u,?v,?k;
            ????????scanf(
            " %d " , & t?);
            ????????
            if (?t == ? 0 ?){
            ????????????scanf(
            " %d%d " , & u, & v?);
            ????????????uf.set_friend(?u,?v??);
            ????????}
            ????????
            else {
            ????????????scanf(
            " %d " , & k?);
            ????????????printf(
            " %d\n " ,?tay.rank(k)?);
            ????????}
            ????}
            ????
            return ? 0 ;
            }
            posted on 2009-07-14 13:31 Darren 閱讀(305) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結構
            久久亚洲私人国产精品| 一级女性全黄久久生活片免费| 香蕉99久久国产综合精品宅男自| 国产精品禁18久久久夂久| 日日噜噜夜夜狠狠久久丁香五月 | 久久精品国产亚洲一区二区三区 | 伊人久久大香线蕉综合网站| 久久九色综合九色99伊人| 国内精品伊人久久久久影院对白 | 久久精品女人天堂AV麻| 久久99精品久久久久久野外| 久久久久久久久久久免费精品| 办公室久久精品| 欧美色综合久久久久久| 久久综合亚洲色HEZYO社区 | 99精品久久精品一区二区| 国产精品久久久久影视不卡| 久久综合九色综合精品| 久久伊人亚洲AV无码网站| 偷窥少妇久久久久久久久| 久久久亚洲欧洲日产国码二区| 久久精品国产精品亚洲精品 | 久久免费视频观看| 一本一道久久a久久精品综合 | 久久综合狠狠综合久久激情 | 久久久久se色偷偷亚洲精品av| 久久久久久夜精品精品免费啦| 日本道色综合久久影院| 亚洲美日韩Av中文字幕无码久久久妻妇 | 久久久久久国产a免费观看黄色大片| 国产精品久久久久a影院| 97久久精品国产精品青草| 久久久不卡国产精品一区二区| 中文国产成人精品久久不卡| 久久婷婷综合中文字幕| 久久精品日日躁夜夜躁欧美| 97超级碰碰碰碰久久久久| 亚洲国产精品无码久久一线| 久久99精品久久久久久不卡| 国产午夜福利精品久久2021| 伊人久久国产免费观看视频|