• 星球大战


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 using namespace std;
     7 const int maxn=5e5+7;
     8 int n,m,num,k,tot;
     9 int head[maxn],p[maxn],fa[maxn],ans[maxn];
    10 bool del[maxn],usd[maxn];
    11 struct Edge{
    12   int nxt,to,dis;
    13 }edge[maxn];
    14 void add(int from,int to){
    15   edge[++num].nxt=head[from];
    16   edge[num].to=to;
    17   head[from]=num;
    18 }
    19 int find(int x){
    20   if(x==fa[x]) return x;
    21   return fa[x]=find(fa[x]);
    22 }
    23 void ins(int x){
    24   for(int i=head[x];i;i=edge[i].nxt){
    25     int v=edge[i].to;
    26     if(usd[v]){
    27       int fx=find(x);int fv=find(v);
    28       if(fx!=fv){
    29         tot--;fa[fx]=fv;
    30       }
    31     }
    32   }
    33 }
    34 int main(){
    35   cin>>n>>m;
    36   for(int i=0;i<n;i++) fa[i]=i;
    37   for(int i=1;i<=m;i++){
    38     int u,v;cin>>u>>v;
    39     add(u,v);add(v,u);
    40   }
    41   cin>>k;
    42   for(int i=1;i<=k;i++){
    43     cin>>p[i];del[p[i]]=true;
    44   }
    45   for(int i=0;i<n;i++){
    46     if(!del[i]){
    47       tot++;
    48       ins(i);
    49       usd[i]=true;
    50     }
    51   }
    52   ans[k+1]=tot;
    53   for(int i=k;i>=1;i--){
    54       tot++;
    55     ins(p[i]);
    56     usd[p[i]]=true;
    57     ans[i]=tot;
    58   }
    59   for(int i=1;i<=k+1;i++) cout<<ans[i]<<endl;
    60   return 0;
    61 } 
  • 相关阅读:
    焦点
    class类名的管理
    querySelector选择器
    DOM动态添加表格
    Java父类强制转换子类原则
    Maven精选系列--classifier元素妙用
    Git分支管理
    Eclipse代替Oracle接管Java EE
    细数Intellij Idea10个蛋疼问题!
    Git仓库操作命令
  • 原文地址:https://www.cnblogs.com/lcan/p/9896923.html
Copyright © 2020-2023  润新知