• bzoj 1015: [JSOI2008]星球大战starwar


     1 #include<cstdio>
     2 #include<iostream>
     3 #define M 2000000
     4 int cnt,fa[M],n,m,ans[M],k,f[M],a[M],head[M],next[2*M],u[2*M];
     5 int zhao(int a1)
     6 {
     7     if(a1==fa[a1])
     8       return a1;
     9     fa[a1]=zhao(fa[a1]);
    10     return fa[a1];
    11 }
    12 void jia(int a1,int a2)
    13 {
    14      cnt++;
    15      next[cnt]=head[a1];
    16      u[cnt]=a2;
    17      head[a1]=cnt;
    18      return;         
    19 }
    20 int main()
    21 {
    22     scanf("%d%d",&n,&m);
    23     for(int i=1;i<=m;i++)
    24       {
    25         int a1,a2;
    26         scanf("%d%d",&a1,&a2);
    27         a1++;
    28         a2++;
    29         jia(a1,a2);
    30         jia(a2,a1);
    31       }
    32     scanf("%d",&k);
    33     for(int i=1;i<=k;i++)
    34       {
    35         int a1;
    36         scanf("%d",&a1);
    37         a[i]=++a1;
    38         f[a1]=1;
    39       }
    40     for(int i=1;i<=n;i++)
    41       fa[i]=i;
    42     ans[k]=n-k;
    43     for(int i=1;i<=n;i++)
    44       if(!f[i])
    45         for(int j=head[i];j;j=next[j])
    46           if(!f[u[j]])
    47             {
    48               int b1=zhao(i),b2=zhao(u[j]);
    49               if(b1!=b2)
    50                {
    51                  fa[b1]=b2;
    52                  ans[k]--;
    53                } 
    54             }
    55     for(int i=k;i;i--)
    56       {
    57         f[a[i]]=0;
    58         ans[i-1]=ans[i]+1;
    59         for(int j=head[a[i]];j;j=next[j])
    60           if(!f[u[j]])
    61             {
    62               int b1=zhao(a[i]),b2=zhao(u[j]);
    63               if(b1!=b2)
    64               {
    65                 fa[b1]=b2;
    66                 ans[i-1]--;
    67               }
    68             }
    69       }
    70     for(int i=0;i<=k;i++)
    71       printf("%d
    ",ans[i]);
    72     return 0;
    73 }

    这个题离线倒着处理 先把所有删的删掉,然后倒着加,用并查集维护即可,当然题目中删掉的是点,别忘了啊!!

  • 相关阅读:
    聚类算法初探(六)OPTICS
    滚动视差效果——background-attachment
    Working with Strings(使用Oracle字符串)
    netstat详解
    lua的学习
    C# 基础知识 (一).概念与思想篇
    11gR2 RAC启用iptables导致节点宕机问题处理
    sqlplus中隐患组合键
    paip.vs2010 或.net 4.0安装出错解决大法.
    paip.svn使用最佳实践
  • 原文地址:https://www.cnblogs.com/xydddd/p/5226891.html
Copyright © 2020-2023  润新知