bzoj1015题解
【题意分析】
给你一张无向图,要求支持删点和询问连通块数。
【解题思路】
可以直接可持久化并查集大力艹过去。
考虑到正着删点就是倒着加点,所以并不需要可持久化。复杂度O((k+m)α(n))。
【参考代码】
当时还在玩泥巴,实现有点naive,常数奇大无比。。
#include<cstdio>
#include<cstring>
#include<set>
#define REP(I,start,end) for(int I=start;I<=end;I++)
#define PER(I,start,end) for(int I=start;I>=end;I--)
using namespace std;
set<int> tree;
int n,m,k,edge=,q[],father[],head[],next[],point[],sav[];
bool destroyed[];
inline void addEdge(int from,int to)
{
next[++edge]=head[from];
head[from]=edge;
point[edge]=to;
}
inline int getFa(int n)
{
if(father[n]==n)
return n;
return father[n]=getFa(father[n]);
}
int main()
{
scanf("%d%d",&n,&m);
REP(i,,m)
{
int u,v;
scanf("%d%d",&u,&v);
addEdge(u,v);
addEdge(v,u);
}
scanf("%d",&k);
memset(destroyed,,sizeof(destroyed));
REP(i,,k)
{
scanf("%d",q+i);
destroyed[q[i]]=true;
}
REP(i,,n-)
father[i]=i;
REP(i,,n-)
if(!destroyed[i])
{
int t=head[i];
while(t)
{
int p=point[t];
if(!destroyed[p])
father[getFa(p)]=getFa(i);
t=next[t];
}
}
tree.clear();
REP(i,,n-)
{
int fa=getFa(i);
if(!destroyed[i]&&tree.find(fa)==tree.end())
tree.insert(fa);
}
sav[k]=tree.size();
PER(i,k-,)
{
int P=q[i+],t=head[P];
destroyed[P]=false;
tree.clear();
while(t)
{
int p=point[t];
if(!destroyed[p])
{
int fa2=getFa(p);
tree.insert(fa2);
father[getFa(P)]=fa2;
}
t=next[t];
}
sav[i]=sav[i+]-tree.size()+;
}
REP(i,,k)
printf("%d\n",sav[i]);
return ;
}
bzoj1015题解的更多相关文章
- BZOJ1015[JSOI2008]星球大战starwar题解报告
题目链接 考虑正序去除点去掉其所有连边十分复杂,可以倒序离线处理,每次新建一个点,连接其连边,用并查集统计联通块的个数. 附代码 #include<iostream> #include&l ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
随机推荐
- ToDoList 增删改查
ToDoList 主要功能 增加数据 删除数据 修改数据 查寻数据渲染页面 1 . HTML页面 <!DOCTYPE html> <html lang="en"& ...
- Anaconda配置
0x00 下载 为了更快的下载,可以到清华开源软件镜像站下载 地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 在此以Anaconda ...
- Ext 面板(Panel)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- docker安装(4)
centos6 docker安装 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo yum install -y ...
- [bzoj3033]太鼓达人 题解(搜索)
Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队伍成员XLk.Poet_shy和ly ...
- php开发面试题---php面向对象详解(对象的主要三个特性)
php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...
- word中怎样把文档里的中文以及中文字符全选?
word中怎样把文档里的中文以及中文字符全选? 参考: 百度 案例: 有个文档是中英文混杂的 现在需要把中文以及中文字符全部设置成别的颜色 应该怎样操作? 有80多页 别说让我一个一个的设置 以wor ...
- git_全局忽略DS_store
创建设置文件 vi ~/.gitignore_global 在文件里输入 /*.DS_Store .DS_Store 设置这个文件全局生效 git config --global core.exclu ...
- MFS分布式文件系统【1】概述
注:以下内容来自互联网 MFS文件系统概论 MFS是linux下的开源存储系统,是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展 ...
- html5语义化标签大全
常见的语义化标签有 <article>.<section>.<nav>.<aside>.<header>.<footer> 详细 ...