【题意】

一棵树有n个节点,初始均为白色,有两种操作:

1. 1 x 代表把结点 x 设置为黑色

2. 2 x 代表查询 x 到树上任意一个黑色结点的简单路径上的编号最小的结点的编号

输入 t 和 z ,其中 t 表示操作类型, x=(last+z)mod n+1,last代表上一次询问答案,初始为 0 ,保证第一个操作为 1

【数据范围】

n,q<=1e6.

【题解】

发现第一个操作保证是1,则可以以第一个染黑的点为根,则每个点到它路径上最小值dis[i]可以预处理出。

发现一个点到所有黑点路径中编号最小的为每个黑点与这个点到根上的编号最小值。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+;
int n,q,last[N],dis[N],size,last1,opt,xx,zx;
struct pigu
{
int dao,ne;
}a[N<<];
inline void lingjiebiao(int x,int y)
{
a[++size].dao=y;
a[size].ne=last[x];
last[x]=size;
}
inline void dfs(int now,int fa)
{
dis[now]=min(dis[now],now);
for(int i=last[now];i;i=a[i].ne)
{
if(a[i].dao==fa) continue;
dis[a[i].dao]=dis[now];
dfs(a[i].dao,now);
}
}
inline int read()
{
char c=getchar();
int x=;
while(!isdigit(c)) c=getchar();
while(isdigit(c)) {x=(x<<)+(x<<)+c-'';c=getchar();}
return x;
}
int main()
{
memset(dis,0x3f,sizeof(dis));
n=read();q=read();
for(int i=,x,y;i<=n-;i++)
{
x=read();y=read();
lingjiebiao(x,y);
lingjiebiao(y,x);
}
opt=read();xx=read();
int rt=xx%n+;
dfs(rt,);
zx=dis[rt];
for(int i=;i<=q-;i++)
{
opt=read();xx=read();
xx=(last1+xx)%n+;
if(opt==)
{
zx=min(zx,dis[xx]);
}
else
{
cout<<min(zx,dis[xx])<<"\n";
xx=min(zx,dis[xx]);
last1=xx;
}
}
}

最新文章

  1. 判断IEnumerable&lt;T&gt;集合中是否包含有T对象
  2. HYSBZ 2002 分块
  3. DataRead 和DataSet区别
  4. 未在本地计算机上注册&quot;microsoft.ACE.oledb.12.0&quot;提供程序解决办法
  5. C语言 ---- 循环分支 iOS学习-----细碎知识点总结
  6. Java 集合系列 14 hashCode
  7. 配置Windows 2008 R2 64位 Odoo 8.0/9.0 源码开发调试环境
  8. git安装教程
  9. jQuery 效果方法
  10. hadoop单机安装
  11. 如何在sqlserver建立新用户并关联相应的数据库
  12. hiberation4 获取session
  13. JDK解压版制作
  14. Elasticsearch简介和安装对比
  15. mac host文件配置
  16. boost::bind 介绍
  17. Shell-9--条件测试
  18. Intel SP处理机以及AMD处理器的一些对比资料
  19. 《UnityShader入门精要》学习笔记之渲染流水线
  20. 【BZOJ 4569】 4569: [Scoi2016]萌萌哒 (倍增+并查集)

热门文章

  1. error LNK2001: unresolved external symbol __imp___rt_sdiv
  2. Fragment学习(二): 管理Fragment和Fragment通讯
  3. hdu 1556 Color the ball(区间更新,单点求值)
  4. laravel中将session由文件保存改为数据库保存
  5. Python--day63--单表的增删改查/GET和POST/request相关知识点回顾
  6. 一次操作系统报错OutOfMemory Error的处理记录
  7. java UDP传输
  8. slot的使用方法
  9. 【t066】致命的珠宝
  10. react + webpack 多页面搭建