博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Educational Codeforces Round 25 G. Tree Queries
阅读量:5115 次
发布时间:2019-06-13

本文共 1023 字,大约阅读时间需要 3 分钟。

题目链接:

题意:

给你一棵树,一开始所有的点全是黑色,有两种操作。

1 x 将x这个点变为黑色,保证第一个操作是这个。

2 x 询问x到任意黑色的点的简单路径上的最小节点编号。

题解:

首先将一个变为黑色的点当成树根,然后dfs一下,预处理出所有点的答案。

然后开一个变量记录一下当前变黑的点的答案cur=min(cur,dp[x])。

每次询问的时候答案就是min(cur,dp[x])。

如果觉得很神奇,自己模拟一遍就知道了。

1 #include
2 #define F(i,a,b) for(int i=(a);i<=(b);++i) 3 using namespace std; 4 5 const int N=1e6+7; 6 vector
g[N]; 7 int n,m,x,y,dp[N]; 8 9 void dfs(int x,int f)10 {11 dp[x]=min(x,dp[f]);12 for(int &it:g[x])if(it!=f)dfs(it,x);13 }14 15 int main(){16 scanf("%d%d",&n,&m);17 F(i,2,n)18 {19 scanf("%d%d",&x,&y);20 g[x].push_back(y);21 g[y].push_back(x);22 }23 dp[0]=N;24 int last=0,cur=N;25 F(i,1,m)26 {27 scanf("%d%d",&x,&y);28 y=(y+last)%n+1;29 if(x==1)30 {31 if(i==1)dfs(y,0);32 cur=min(cur,dp[y]);33 }else printf("%d\n",last=min(cur,dp[y]));34 }35 return 0;36 }
View Code

 

转载于:https://www.cnblogs.com/bin-gege/p/7205090.html

你可能感兴趣的文章
伪类与超链接
查看>>
centos 7 redis-4.0.11 主从
查看>>
博弈论 从懵逼到入门 详解
查看>>
永远的动漫,梦想在,就有远方
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
慵懒中长大的人,只会挨生活留下的耳光
查看>>
"远程桌面连接--“发生身份验证错误。要求的函数不受支持
查看>>
【BZOJ1565】 植物大战僵尸
查看>>
VALSE2019总结(4)-主题报告
查看>>
浅谈 unix, linux, ios, android 区别和联系
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>