<题目链接>

题目大意:
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最短路)的更多相关文章

  1. Codeforces 954D Fight Against Traffic(BFS 最短路)

    题目链接:Fight Against Traffic 题意:有n个点个m条双向边,现在给出两个点S和T并要增加一条边,问增加一条边且S和T之间距离不变短的情况有几种? 题解:首先dfs求一下S到其他点 ...

  2. codeforces 813C The Tag Game 树+dfs追击问题

    C. The Tag Gametime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutpu ...

  3. CodeForces - 813C The Tag Game (树的dfs遍历)

    [传送门]http://codeforces.com/problemset/problem/813/C [题目大意]两个人玩游戏,一个人跑一个人追,轮流决策,可以走也可以不走.给你一棵树,想要从某个结 ...

  4. CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)

    [传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得  xa yb zc值最大的实数 x,y,z , 其中x ...

  5. POJ 2251 Dungeon Master (BFS最短路)

    三维空间里BFS最短路 #include <iostream> #include <cstdio> #include <cstring> #include < ...

  6. 【bzoj5049】[Lydsy九月月赛]导航系统 并查集+双向BFS最短路

    题目描述 给你一张 $n$ 个点 $m$ 条边的随机图,边权为1.$k$ 次询问两点间最短路,不连通则输出-1. 输入 第一行包含3个正整数n,m,k(2<=n<=100000,1< ...

  7. 【bzoj1189】[HNOI2007]紧急疏散evacuate BFS最短路+动态加边网络流

    题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以 ...

  8. BZOJ 1195 [HNOI2006]最短母串 (Trie图+状压+bfs最短路)

    BZOJ1195 LOJ10061 题目大意:给你$n$个模式串,求一个最短且字典序最小的文本串并输出这个串,$n<=12,len<=50$ 首先对所有模式串构造$Trie$图,$Trie ...

  9. UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)

    题意 : 机器人要从一个m * n 网格的左上角(1,1) 走到右下角(m, n).网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示).机器人每次可以往4个方向走一格,但不能连续地穿越k( ...

随机推荐

  1. NameNode和SecondaryNameNode工作原理剖析

    NameNode和SecondaryNameNode工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode中的元数据是存储在那里的? 1>.首先,我 ...

  2. Vue学习笔记六:v-model 数据双向绑定

    目录 v-model简介和适用范围 新建HTML 所见即所得 v-model模拟简易计算器 v-model简介和适用范围 Vue的一大特点之一就是数据的双向绑定,v-model就是实现这个功能的指令, ...

  3. Dynamics CRM - 使用 C# Plugin 调用 SQL 存储过程

    有时候,在 Dynamics CRM Plugin 中通过 linq 查询数据会比较慢,可以通过采用在 C# plugin 中直接调用数据库存储过程的方式来提高效率,具体过程如下: 1.新建一个存储过 ...

  4. linux 每个小时释放一次cache

    echo 3 > /proc/sys/vm/drop_caches;

  5. windows 下启动运行 jar 包程序

    windows 下 运行 jar 包 java -jar XXX.jar java -server -Xms1024m -Xmx20480m -jar $JAR_NAME.jar windows 后台 ...

  6. Linux基础系统优化及常用命令

    # Linux基础系统优化及常用命令 [TOC] ## Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. - ...

  7. 【翻译】 Guice 动机——依赖注入的动机

    原文链接 动机 将所有的内容连接在一起时应用开发的一个单调乏味的部分.有几种方式来将数据.服务.presetntation类连接到一起.为了对比这些方法,我将为披萨订购网站编写账单代码: public ...

  8. 这是一个蒟蒻的计划……QAQ

    感觉像我这种拖拉的人很有可能是完成不了的,挂上来相当于监督我自己啦QWQ [学习计划] [√]1.去看Trie树!!!   yyb学长的blog 2.KMP还有AC自动机 先贴两个链接在这里吧:KMP ...

  9. C#中 将图片保存到Sql server 中

    private void Form1_Load(object sender, EventArgs e) { #region 保存数据库 string url = @"C:\Users\Adm ...

  10. easyui时间框只选择年月

    html: <input type="text" id="datetime" > js: <script type="text/ja ...