Description

Input

Output

可以转为边权为1的最短路:将不修改并读取x个数看作有向边,原先树上的边仍保留且视为双向边(但从根出发的边为单向)表示上次读取的修改

第一种边是点到bfs序的一个区间区间连边,用并查集维护bfs序中每个位置下一个未处理的位置即可

为了求出这个bfs序区间,需要知道一个点向左下(右下)走x步到达的点,将树上每个点和其最左(右)孩子间的边保留,删去其它边,得到一些链,维护每个点在链上的位置即可支持询问

求bfs序区间可以做到O(n),bfs由于用到并查集需要O(nlogn)或O(nα(n)),I/O为瓶颈需要O(nlogn)时间

#include<cstdio>
const int N=1e6+;
int mem[N],*mp=mem;
int n,*e[N][],v[N],fa[N];
int f[N],q[N],ql=,qr=;
int lq[N],rq[N],bq[N];
int id[N][],bid[N],lp=,rp=,F[N];
int gf(int x){
while(x!=F[x])x=F[x]=F[F[x]];
return x;
}
void chk(int w,int d){
if(f[w]>=)return;
f[w]=d;
q[++qr]=w;
if(e[w][]==e[w][])printf("%d\n",d);
}
void pre(){
ql=qr=;
bq[bid[]=++qr]=;
while(ql!=qr){
int w=bq[++ql];
if(!id[w][])for(int x=w;;x=e[x][][]){
lq[id[x][]=++lp]=x;
if(e[x][]==e[x][])break;
}
if(!id[w][])for(int x=w;;x=e[x][][-]){
rq[id[x][]=++rp]=x;
if(e[x][]==e[x][])break;
}
for(int*a=e[w][],*b=e[w][];a!=b;bq[bid[*a]=++qr]=*a,++a);
}
}
int _(){
int x;
scanf("%d",&x);
return x;
}
int main(){
n=_();
for(int i=;i<=n+;++i)F[i]=i;
for(int i=;i<=n;++i)f[i]=-;
for(int w=,c;w<=n;++w){
v[w]=_();
c=_();
for(int j=;j<c;++j)fa[mp[j]=_()]=w;
e[w][]=mp;
mp+=c;
e[w][]=mp;
}
pre();
ql=qr=;
chk(,);
while(ql!=qr){
int w=q[++ql],u,d=f[w]+;
for(int*a=e[w][],*b=e[w][];a!=b;++a){
u=*a;
if(w!=)chk(u,d);
for(int L=gf(bid[lq[id[u][]+v[u]]]),R=bid[rq[id[u][]+v[u]]];L<=R;chk(bq[L],d),L=F[L]=gf(L+));
}
if(w!=)chk(fa[w],d);
}
return ;
}

bzoj2035: [2009国家集训队]数据读取问题的更多相关文章

  1. BZOJ 2039: [2009国家集训队]employ人员雇佣

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1369  Solved: 667[Submit ...

  2. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Subm ...

  4. 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  5. Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 5763  Solved: 2660[Subm ...

  6. BZOJ2038: [2009国家集训队]小Z的袜子(hose) -- 莫队算法 ,,分块

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 3577  Solved: 1652[Subm ...

  7. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )

    莫队..先按sqrt(n)分块, 然后按块的顺序对询问排序, 同块就按右端点排序. 然后就按排序后的顺序暴力求解即可. 时间复杂度O(n1.5) --------------------------- ...

  8. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 分块

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

  9. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 9894  Solved: 4561[Subm ...

随机推荐

  1. C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}...

    int a = 12345678; //格式为sring输出//   Label1.Text = string.Format("asdfadsf{0}adsfasdf",a);// ...

  2. (C/C++学习笔记) 十二. 指针

    十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...

  3. <NET CLR via c# 第4版>笔记 第15章 枚举类型和位标志

    15.1 枚举类型 枚举定义的符号是常量值. C#编译器编译时,会用数值替换符号,不再引用定义了符号的枚举类型.可能会出现一些版本问题. Enum.IsDefined(Type enumType, o ...

  4. docker中的安全机制

    有时候我们需要容器具有更多的权限,像如操作内核模块,控制swap交换分区,挂载usb磁盘,修改mac地址等.所以我们今天进行docker的安全设定. 一.使用docker命令设置docker的安全机制 ...

  5. 解决Ubuntu下adb无法联接手机终端

    1.首先确认开发者选项中USB调试是否打开. 2.在终端输入lsusb,如下图: 查看设备是否已经连接,如果没有此选项,请检查你的手机数据线是否正常连接,否则你的手机就可以用来防身和砸核桃了. 3.在 ...

  6. react 学习日记

    1.本地配置代理服务:   create-react-app 创建的react项目 package.jsoin 中 加入: "proxy": "http://localh ...

  7. 通过Servlet设置文件下载

    文件下载 1.获取要下载的文件的绝对路径 但是使用getServletContext().getRealPath()方法在不同的服务器上所获得的实现是不一样的 因为项目被打包入.war文件以后就失去了 ...

  8. CodeForces - 325E:The Red Button (哈密尔顿 转 欧拉回路)

    Piegirl found the red button. You have one last chance to change the inevitable end. The circuit und ...

  9. BZOJ3514: Codechef MARCH14 GERALD07加强版【LCT】【主席树】【思维】

    Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...

  10. 20155229 2016-2017-2 《Java程序设计》第五周学习总结

    20155229 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第八章: Java中所有错误都会被打包为对象. 设计错误对象都继承自java.lang.Th ...