【BZOJ】1015: [JSOI2008]星球大战starwar
来源:互联网 发布:完美游戏平台网络错误 编辑:程序博客网 时间:2024/05/21 14:59
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1015
直接做似乎比较麻烦。然后一下脑抽没有想到离线倒着瞎搞……
倒着来大概就是一个并查集了。然后没有然后了……
#include<stdio.h>#define cint const int &#define Void inline void#define N 400005int tot,ans[N],f[N],a[N],vis[N],n,m,s[N];struct edge{int v,n;}e[N];Void push(cint u,cint v){e[++tot]=(edge){v,s[u]};s[u]=tot;}int gf(cint x){return x==f[x]?x:f[x]=gf(f[x]);}Void solve(cint u,int &ans){ if (vis[u]) return; int F=u;ans++; for (int i=s[u];i;i=e[i].n) if ((!vis[e[i].v]) && F!=gf(e[i].v)) { F=f[F]=f[e[i].v]; ans--; }}int main(){ scanf("%d%d",&n,&m); for (int u,v;m--;) { scanf("%d%d",&u,&v); push(++u,++v);push(v,u); } scanf("%d",&m); for (int i=1;i<=m;i++) scanf("%d",a+i),vis[++a[i]]=1; for (int i=1;i<=n;i++) f[i]=i,vis[i]=vis[i]?1:2; for (int i=1;i<=n;i++) vis[i]=vis[i]==1?1:0,solve(i,ans[m+1]); for (int i=m;i;i--) vis[a[i]]=0,solve(a[i],ans[i]=ans[i+1]); for (int i=1;i<=m+1;i++) printf("%d\n",ans[i]);}
0 0
- [BZOJ 1015][JSOI2008]星球大战starwar
- BZOJ 1015: [JSOI2008]星球大战starwar
- BZOJ 1015: [JSOI2008]星球大战starwar
- 【BZOJ 1015】 [JSOI2008]星球大战starwar
- bzoj 1015: [JSOI2008]星球大战starwar
- BZOJ 1015 [JSOI2008]星球大战starwar
- 【bzoj 1015】[JSOI2008]星球大战starwar
- bzoj 1015: [JSOI2008]星球大战starwar
- 【BZOJ 1015】 [JSOI2008]星球大战starwar
- 【BZOJ】1015: [JSOI2008]星球大战starwar
- [bzoj]1015: [JSOI2008]星球大战starwar
- bzoj 1015: [JSOI2008]星球大战starwar
- bzoj 1015: [JSOI2008]星球大战starwar
- BZOJ 1015: [JSOI2008]星球大战starwar kevin_xcw
- 1015: [JSOI2008]星球大战starwar
- 1015: [JSOI2008]星球大战starwar
- 1015: [JSOI2008]星球大战starwar
- 并查集 BZOJ 1015 1015: [JSOI2008]星球大战starwar
- struts2工作原理
- spring 声明性事务
- 我是程序员
- c#判断程序运行环境的位数
- x86架构——内存管理
- 【BZOJ】1015: [JSOI2008]星球大战starwar
- 大话设计模式-第一章 简单工厂模式
- Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色
- 接口层在重构中的作用
- Dlib+VS2017配置
- 《ACM程序设计》书中题目 X
- UVALive4959Jumping monkey 【状压DP】
- 二项分布和Beta分布
- leetcode:67. Add Binary