• bzoj 1015


    很早就看到了题目但看到问题缺漏就果断跳开了。。。你萌说乱搞,然后我乱搞就华丽丽的TLE了。。。
    至于倒着加点,脑子转不过来自己应该想不到orz

     1 #include<bits/stdc++.h>
     2 #define inc(i,l,r) for(i=l;i<=r;i++)
     3 #define dec(i,l,r) for(i=l;i>=r;i--)
     4 #define inf 1e9
     5 #define mem(a,b) memset(a,b,sizeof(a))
     6 #define NM 400000+1
     7 using namespace std;
     8 struct edge{
     9     int t;
    10     edge *next;
    11 }e[2*NM],*h[NM];
    12 int a[NM],f[NM],q[NM],ans,s,i,n,m,x,y;
    13 bool v[NM];
    14 void add(int x,int y){
    15     e[++s].t=y;e[s].next=h[x];h[x]=&e[s];
    16 }
    17 int find(int x){
    18     return f[x]==x?x:f[x]=find(f[x]);
    19 }
    20 void addnode(int x){
    21     for(edge *j=h[x];j;j=j->next)
    22     if(v[j->t]){
    23         int a=find(j->t),b=find(x);
    24         if(a!=b){
    25             f[a]=b;
    26             ans--;
    27         }
    28     }
    29 }
    30 int main(){
    31     scanf("%d%d",&n,&m);
    32     inc(i,0,n-1)f[i]=i;
    33     inc(i,1,m){
    34         scanf("%d%d",&x,&y);
    35         add(x,y);add(y,x);
    36     }
    37     mem(v,true);
    38     scanf("%d",&m);
    39     inc(i,1,m){
    40         scanf("%d",&a[i]);
    41         v[a[i]]=false;
    42     }
    43     inc(i,0,n-1)
    44     if(v[i]){
    45         ans++;
    46         addnode(i);
    47     }
    48     q[m+1]=ans;
    49     dec(i,m,1){
    50         ans++;
    51         v[a[i]]++;
    52         addnode(a[i]);
    53         q[i]=ans;
    54     }
    55     inc(i,1,m+1)printf("%d
    ",q[i]);
    56     return 0;
    57 }
    View Code
  • 相关阅读:
    动手动脑及类的创建
    动手动脑-Java重载
    方法的动手动脑
    文本单词数测试
    动手动脑
    springmvc使用fastjson
    springmvc之发送json数据自动转Java对象接收
    springmvc之拦截器
    基于xml配置springmvc案例
    springmvc之异常处理
  • 原文地址:https://www.cnblogs.com/onlyRP/p/4719764.html
Copyright © 2020-2023  润新知