<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      這題一眼lct,然而

      #include<iostream>
      #include<cstdio>
      #include<cmath>
      #include<cstring>
      #include<algorithm>
      using namespace std;
      const int maxn=100010;
      int n,m,k,fa[maxn],sta1[maxn*50],sta2[maxn*50],top,tt,ans[maxn];
      int getfa(int x){
          if(x!=fa[x]){
              sta1[++top]=x;sta2[top]=fa[x];
              fa[x]=getfa(fa[x]); 
          }
          return fa[x];
      }
      struct edg{
          int x,y,tim;
      }e[maxn*2];
      struct que{
          int num,c[5];
      }q[maxn];
      void cdq(int l,int r){
          int now=top;
          if(l==r){
              ans[l]=1;
              for(int i=1;i<=q[l].num;++i){
                  int fx=getfa(e[q[l].c[i]].x);
                  int fy=getfa(e[q[l].c[i]].y);
                  if(fx!=fy){
                      ans[l]=0;break;
                  }
              }
              while(top!=now)fa[sta1[top]]=sta2[top],top--;
              return; 
          }
          ++tt;
          int mid=l+r>>1;
          for(int i=l;i<=mid;++i)
              for(int j=1;j<=q[i].num;++j){
                  e[q[i].c[j]].tim=tt;
          }
          for(int i=mid+1;i<=r;++i)
              for(int j=1;j<=q[i].num;++j)
              if(e[q[i].c[j]].tim!=tt){
                  int fx=getfa(e[q[i].c[j]].x);
                  int fy=getfa(e[q[i].c[j]].y);
                  if(fx!=fy){
                      sta1[++top]=fx;sta2[top]=fa[fx];
                      fa[fx]=fy;
                  }
          }
          cdq(l,mid);
          while(top!=now){fa[sta1[top]]=sta2[top];top--;}
          ++tt;
          for(int i=mid+1;i<=r;++i)
              for(int j=1;j<=q[i].num;++j){
                  e[q[i].c[j]].tim=tt;
              }
          for(int i=l;i<=mid;++i)
              for(int j=1;j<=q[i].num;++j)
              if(e[q[i].c[j]].tim!=tt){//把后面的所有邊中前面沒刪的加上; 
                  int fx=getfa(e[q[i].c[j]].x);
                  int fy=getfa(e[q[i].c[j]].y);
                  if(fx!=fy){
                      sta1[++top]=fx;sta2[top]=fa[fx];
                      fa[fx]=fy;
                  }
          }
          cdq(mid+1,r);
      } 
      int main(){
          cin>>n>>m;
          for(int i=1;i<=n;++i)fa[i]=i;
          for(int i=1;i<=m;++i){
              scanf("%d%d",&e[i].x,&e[i].y);
              e[i].tim=0;
          }
          cin>>k;tt=1;
          for(int i=1;i<=k;++i){
              scanf("%d",&q[i].num);
              for(int j=1;j<=q[i].num;++j){
                  scanf("%d",&q[i].c[j]);
                  e[q[i].c[j]].tim=tt;
              }
          }
          for(int i=1;i<=m;++i)
          if(e[i].tim!=tt){
              int fx=getfa(e[i].x);
              int fy=getfa(e[i].y);
              if(fx!=fy)fa[fx]=fy;
          }
          cdq(1,k);
          for(int i=1;i<=k;++i){
              if(ans[i])puts("Connected");
              else puts("Disconnected");
          }
          return 0;
      } 

       

      題解說可以cdq+并查集,于是復習了一下cdq;

      posted on 2018-03-22 16:29  湮滅之瞳  閱讀(147)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 自拍偷亚洲产在线观看| 深夜在线观看免费av| 中文字幕在线无码一区二区三区| 久久夜色撩人精品国产小说| 99精品国产一区二区三区不卡| 亚洲综合精品中文字幕| 成人亚欧欧美激情在线观看| 免费视频国产在线观看| 日韩高清不卡一区二区三区| 精品国产中文字幕在线| 国产老熟女无套内射不卡| 二区中文字幕在线观看| 亚洲天堂av日韩精品| 国产精品国产高清国产av| 亚洲免费的福利片| 中文字幕久久人妻熟人妻| 亚洲精品麻豆一二三区| 亚洲aⅴ无码专区在线观看q| 一区二区三区无码高清视频| 国产蜜臀视频一区二区三区| 午夜DY888国产精品影院| 国产成人不卡一区二区| 国产高清乱码又大又圆| 亚洲精品国产av一区二区| 免费国产一级 片内射老| 最新的国产成人精品2020| 亚洲精品中文字幕尤物综合| 国产毛a片啊久久久久久保和丸| 久久天天躁狠狠躁夜夜躁2o2o| 高清自拍亚洲精品二区| 日日摸天天爽天天爽视频| 精品无码三级在线观看视频| 中文乱码字幕在线中文乱码 | 377p日本欧洲亚洲大胆张筱雨| 亚洲综合无码一区二区| 精品国产自在久久现线拍| 亚洲av一区二区在线看| 日韩人妻中文字幕精品| 平遥县| 深夜免费av在线观看| 日夜啪啪一区二区三区|