分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

luogu_1197 [JSOI2008]星球大战

发布时间:2023-09-06 01:16责任编辑:熊小新关键词:暂无标签
#include <cstdio>#include <iostream>#include <vector>using namespace std;const int N=400020;const int M=200010;int p[N],n,m,k,a[M],sum,ans[M];vector<int> G[N];bool b[N];int find(int x){return x==p[x]?x:p[x]=find(p[x]);}int main(){ ???scanf("%d%d",&n,&m); ???for(int i=1;i<=n;i++)p[i]=i; ???for(int i=1;i<=m;i++){ ???????int x,y; ???????scanf("%d%d",&x,&y); ???????G[x].push_back(y); G[y].push_back(x); ???} ???scanf("%d",&k); sum=n-k; ???for(int i=1;i<=k;i++){scanf("%d",&a[i]); b[a[i]]=1;} ???for(int i=1;i<=n;i++){ ???????if(b[i])continue; ???????for(int j=0;j<G[i].size();j++){ ???????????int v=G[i][j]; ???????????if(find(v)!=find(i) && b[v]==0){ ???????????????sum--; ???????????????p[find(v)]=find(i); ???????????} ???????} ???} ???for(int i=k;i>=0;i--){ ???????ans[i]=sum; sum++; b[a[i]]=0; ???????for(int j=0;j<G[a[i]].size();j++){ ???????????int v=G[a[i]][j]; ???????????if(find(v)!=find(a[i]) && b[v]==0){ ???????????????sum--; ???????????????p[find(v)]=find(a[i]); ???????????} ???????} ???} ???for(int i=0;i<=k;i++)printf("%d\n",ans[i]); ???return 0;}

  

luogu_1197 [JSOI2008]星球大战

原文地址:http://www.cnblogs.com/codetogether/p/7647776.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved