Codeforces 813C The Tag Game (BFS最短路)
<题目链接>
题目大意:
A、B两人在一颗树上,A在根节点1上,B在节点x上,现在他们轮流走,每次只能走一步,或者不走。A以尽可能靠近B的方式行走,B以尽可能远离A的方式走,B先开始走。问你这两人相遇时,总共走了多少步。
解题分析:
模拟A、B走路的过程可以发现,其实A、B走路的步数就是在B所能够到达的点中,距离A最远的点*2。所谓B能够到达的点就是,B到达这个点的最短时间一定要小于A达到这个点的最短时间。否则B就会在这个点出被A抓住。因为是B先走,所以B只要走那些比A先到的节点,就一定只会和A在距A最远的叶子节点相遇,因为B到了那个叶子节点之后,一定会选择一直不动,所以A、B相遇的时间就如上面所述。
#include <bits/stdc++.h>
using namespace std;
template<typename T>
inline void read(T&x){
x=;;char c=getchar();
;c=getchar(); }
+c-';c=getchar(); }
x*=f;
}
;
const int INF = 0x3f3f3f3f;
int n,x,ans,cnt,loc;
int head[N],d1[N],d2[N],vis[N];
];
inline void add(int u,int v){
e[++cnt]=(Edge){v,head[u]};
head[u]=cnt;
}
void bfs1(int st){ //将根节点到所有点的最短距离全部求出来
memset(d1,0x3f,sizeof(d1));
d1[st]=;
queue<int>q;
q.push(st);vis[st]=;
while(q.size()){
int u=q.front();q.pop();
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(vis[v])continue;
d1[v]=d1[u]+;
vis[v]=;
q.push(v);
}
}
}
void bfs2(int st){ //将x能够到达的所有点的最短距离求出来
memset(d2,0x3f,sizeof(d2));
memset(vis,,sizeof(vis));
d2[st]=;vis[st]=;ans=d1[st];
queue<int>q;q.push(st);
while(q.size()){
int u=q.front();q.pop();
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
)>=d1[v])continue; //如果到达该点的时间晚于1节点到达的时间
d2[v]=d2[u]+;vis[v]=;
//此时v点B能够到达
ans=max(ans,d1[v]);
q.push(v);
}
}
}
int main(){
read(n);read(x);
;i<n;i++){
int u,v;read(u);read(v);
add(u,v);add(v,u);
}
bfs1();
/* for(int i=1;i<=n;i++){
printf("i=%d,d1=%d\n",i,d1[i]);
} */
bfs2(x);
printf(*ans);
}
Codeforces 813C The Tag Game (BFS最短路)的更多相关文章
- Codeforces 954D Fight Against Traffic(BFS 最短路)
题目链接:Fight Against Traffic 题意:有n个点个m条双向边,现在给出两个点S和T并要增加一条边,问增加一条边且S和T之间距离不变短的情况有几种? 题解:首先dfs求一下S到其他点 ...
- codeforces 813C The Tag Game 树+dfs追击问题
C. The Tag Gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutpu ...
- CodeForces - 813C The Tag Game (树的dfs遍历)
[传送门]http://codeforces.com/problemset/problem/813/C [题目大意]两个人玩游戏,一个人跑一个人追,轮流决策,可以走也可以不走.给你一棵树,想要从某个结 ...
- CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)
[传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得 xa yb zc值最大的实数 x,y,z , 其中x ...
- POJ 2251 Dungeon Master (BFS最短路)
三维空间里BFS最短路 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- 【bzoj5049】[Lydsy九月月赛]导航系统 并查集+双向BFS最短路
题目描述 给你一张 $n$ 个点 $m$ 条边的随机图,边权为1.$k$ 次询问两点间最短路,不连通则输出-1. 输入 第一行包含3个正整数n,m,k(2<=n<=100000,1< ...
- 【bzoj1189】[HNOI2007]紧急疏散evacuate BFS最短路+动态加边网络流
题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以 ...
- BZOJ 1195 [HNOI2006]最短母串 (Trie图+状压+bfs最短路)
BZOJ1195 LOJ10061 题目大意:给你$n$个模式串,求一个最短且字典序最小的文本串并输出这个串,$n<=12,len<=50$ 首先对所有模式串构造$Trie$图,$Trie ...
- UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
题意 : 机器人要从一个m * n 网格的左上角(1,1) 走到右下角(m, n).网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示).机器人每次可以往4个方向走一格,但不能连续地穿越k( ...
随机推荐
- SEO基础内容
学习SEO人群 网络设计师 网站站长 搜索引擎相关人员 网络营销顾问 企业主 搜索引擎 Yahoo msn google baidu SEM包括SEO,竞价排名等 搜索引擎爬虫流程 派出爬虫-> ...
- python基础学习小结
Python是一门面向对象的解释性语言(脚本语言),这一类语言的特点就是不用编译,程序在运行的过程中,由对应的解释器向CPU进行翻译,个人理解就是一边编译一边执行.而JAVA这一类语言是需要预先编译的 ...
- Angular记录(7)
文档资料 箭头函数--MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_fun ...
- ./runInstaller: Permission denied
一:问题描述 安装oracle过程中出现 二:解决 /usr/local/Oracle11./database/runInstaller /usr/local/Oracle11./database/i ...
- 【ShaderToy】抗锯齿相关函数
*示例代码可以直接在ShaderToy中运行. *我放在这里咯ShaderToy基础学习中~欢迎交流(ノ>ω<)ノ 先上未抗锯齿的两个圆形图案,可以清楚看清图案边缘像素块,即“锯齿”. 附 ...
- JavaScript中的alert()与console.log()的区别
1.alert() [1.1]有阻塞作用,不点击确定,后续代码无法继续执行 [1.2]alert()只能输出string,如果alert输出的是对象会自动调用toString()方法 e.g. ale ...
- Arduino-常用指令
pinMode(LEDPin,OUTPUT); //设置引脚模式 参数1 引脚 参数2 OUTPUT 输出:INPUT 输入 用在setup()函数里 digi ...
- 自适应rem.js
用rem.js来实现自适应屏幕大小,要注意border不用rem做单位 代码如下: (function (doc, win) { //orientationchange : 判断手机是水平方向还是垂 ...
- EXCEL上传POI
Java SpringMVC POI上传excel并读取文件内容 2017年11月27日 15:26:56 强人锁男. 阅读数:15329 用的SSM框架,所需要的jar包如图所示:,链接地址:j ...
- springboot+mysql+mybatis+Mybatis-Generator+druid 项目demo
1.使用idea新建项目 2.使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件 3.配置application.yml文件 server: port: 8080 ...