Codeforces Round #787 (Div. 3) F. Vlad and Unfinished Business

news2024/11/25 7:05:29

翻译:

Vlad和Nastya住在一个由𝑛房子和𝑛−1路组成的城市。从每一个房子,你只需要沿着路走就可以到达另一个。也就是说,城市是一棵树。

弗拉德住在索引为𝑥的房子里,娜斯提亚住在索引为𝑦的房子里。弗拉德决定去拜访娜斯提亚。然而,他想起他已经推迟了𝑘他必须在来纳斯提亚之前做的事情。要做𝑖-th的事情,他需要来𝑎𝑖-th的房子,事情可以按任何顺序进行。在1分钟内,他可以从一个房子走到另一个房子,如果他们有道路相连。

弗拉德不太喜欢走路,所以他很感兴趣的是他最少要在路上花多少分钟才能完成所有的事情,然后才能到达纳斯提亚。房子𝑎1,𝑎2,…,𝑎𝑘他可以按任何顺序访问。他可以多次访问任何房子(如果他想)。

输入
第一行输入包含一个整数𝑡(1≤𝑡≤104)—输入测试用例的数量。在每个测试用例之前都有一个空行。

每个测试用例的第一行分别包含两个整数𝑛和𝑘(1≤𝑘≤𝑛≤2⋅105)——房子和东西的数量。

每个测试用例的第二行包含两个整数𝑥和𝑦(1≤𝑥,𝑦≤𝑛)——分别是Vlad和Nastya居住的房子的指数。

每个测试用例的第三行包含𝑘整数𝑎1,𝑎2,…,𝑎𝑘(1≤𝑎𝑖≤𝑛)-房子Vlad需要来做的事情的指数。

以下的𝑛−1行包含城市的描述,每一行包含两个整数𝑣𝑗和𝑢𝑗(1≤𝑢𝑗,𝑣𝑗≤𝑛)——通过道路𝑗连接的房屋的指数。

保证所有案例𝑛的总和不超过2⋅105。

输出
输出𝑡行,每一行都包含输入的相应测试用例的答案。作为一个答案输出单个整数- Vlad在路上做所有事情和到达Nastya所需的最小分钟数。

例子
inputCopy
3.

3个1
1 3
2
1 3
1 2

6 4
3个5
1 6 2 1
1 3
3 4
3个5
5个6
5个2

6 - 2
3 - 2
5个3
1 3
3 4
3个5
5个6
5个2
outputCopy
3.
7
2
请注意
树和第一个测试用例的最佳路径:

1→2→1→3
树和第二个测试用例的最佳路径:

3→1→3→5→2→5→6→5
树和第三个测试用例的最佳路径:

3→5→2

思路:x——>y,要先经过k个点。是道结论题,如果k中有点在x——>y的路径上,就只需要跑一次,不需要回头,如果点不在x——>y的路径上,就需要回头跑两次。画下图,大概就可以理解了。然后我们直接建树+标记+dfs,最后根据每个路径跑一次还是两次,进行加和即可。

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}
vector<int>q[200005];
//int a[200005];
bool fir[200005];
bool sec[200005];
int k,cx,cy,ww,qq;
void dfs(int now,int fa){
    for (int i  =0; i<q[now].size(); i++) {
        if (q[now][i]==fa) {
            continue;
        }
        dfs(q[now][i], now);
        if (fir[q[now][i]]) {
            fir[now]=true;
        }else if (sec[q[now][i]]){
            sec[now]=true;
        }
    }
}
void solv(){
    cin>>n>>k>>cx>>cy;
    for (int i =0; i<=n; i++) {
        fir[i]=sec[i]=false;
        q[i].clear();
    }
    fir[cy]=true;
    for (int i =1; i<=k; i++) {
        cin>>ww;
        sec[ww]=true;
    }
    ll ans=0;
    for (int i =1; i<n; i++) {
        cin>>qq>>ww;
        q[qq].push_back(ww);
        q[ww].push_back(qq);
    }
    dfs(cx, cx);
//    for (int i =1; i<=n; i++) {
//        if (fir[i]) {
//            printf("%d ",i);
//        }
//
//    }
    for (int i =1; i<=n; i++) {
        if (i==cx) {
            continue;
        }
        if (fir[i]) {
            ans++;
        }
        else if(sec[i])
            ans+=2;
    }
    printf("%lld\n",ans);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    while (t--) {
        solv();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计SSM交通事故记录信息管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

「Redis数据结构」字符串对象String

「Redis数据结构」字符串对象String 文章目录「Redis数据结构」字符串对象String一、概述二、编码分类intembstrrow三、小结四、参考一、概述 字符串数据类型是Redis里最常用的类型&#xff0c;它的键和值都是字符串&#xff0c;使用起来非常的方便。虽然字符串数据类型的值都…

BUG系列路径规划算法原理介绍(一)——总结篇

本系列文章主要对Bug类路径规划算法的原理进行介绍&#xff0c;在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展&#xff0c;整理了13种BUG系列中的典型算法&#xff0c;从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、…

【论文合集】2022年11月医学影像期刊论文合集

★ 本月IEEE Transactions on Medical Imaging(1区 top if 11.037) 共41篇, Medical Image Analysis&#xff08;1区 top if 13.828&#xff09; 共47篇. ”标题高频词汇 (segmentation, 15), (medical, 13), (3d, 6), (domain, 6), (surgical, 5), (reconstruction, 5), (at…

confluence的几个高危漏洞复现

序言 本次复现涉及了好几个confluence的相关漏洞&#xff0c;从复现利用到提权&#xff0c;有兴趣的可以自行搭建环境测试。 1.CVE-2021-26084 Confluence OGNL 注入漏洞 1.1 漏洞描述 在某些情况下&#xff0c;远程攻击者在经过身份验证或在特定环境下未经身份验证的情况下…

【MySQL】表的增删改查(二)

你可以了解世间万物&#xff0c;但追根溯源的唯一途径便是亲身尝试。——《心灵捕手》 前言&#xff1a; 大家好&#xff0c;上期我们讲到了表的GRUD操作中的新增数据、查询数据以及表中数据的排序、去重等操作&#xff0c;本期讲解条件查询、修改数据、删除数据的简单操作&…

Jlink_V9固件修复教程

最近自己的Jlink坏了&#xff0c;于是找了一个好的Jlink给坏的重新刷了一下固件就修好了。记录一下修复过程&#xff0c;以及遇到的问题。 故障现象&#xff1a;Jlink丢失固件之后指示灯不亮&#xff0c;连接板子时&#xff0c;KEIL无法识别。 注&#xff1a;JLINK_V9主控芯…

【Vue】从vue2到vue3,生命周期函数有何变化之详解

vue2与vue3生命周期的对比&#xff1a; Vue2--------------Vue3 beforeCreate—————–>setup() created————————>setup() beforeMount—————–>onBeforeMount mounted—————-------> onMounted beforeUpdate -————–> onBeforeUpdate u…

Spring Boot自动配置原理(Spring Boot面试题)

目录 1、产生疑惑 2、源码分析 2.1、pom.xml文件分析 2.2、启动类分析 3、总结 1、产生疑惑 当我们第一次使用Spring Boot练习的时候会觉得Spring Boot这么厉害&#xff0c;不管是依赖还是配置&#xff0c;它都为我们准备好了&#xff0c;我们只需要去编写业务代码就可…

[附源码]Python计算机毕业设计Django数字乡村基础治理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

调优四剑客的实战演练,福尔摩斯•K带你轻松优化性能

前言天下武功&#xff0c;唯快不破。在侦探的世界中&#xff0c;破案效率永远是衡量一名侦探能力的不二法门。作为推理界冉冉升起的新星&#xff0c;大侦探福尔摩斯K凭借着冷静的头脑、严谨的思维&#xff0c;为我们展现了一场场华丽而热血的推理盛宴。接下来&#xff0c;我们不…

【运维面试题】访问www.baidu.com背后发生了什么·dns解析过程·ping过程

文章目录 一、访问www.baidu.com背后发生了什么二、dns解析过程答法1(推荐)答法2三、ping过程一、访问www.baidu.com背后发生了什么 1.浏览器解析url是否合法 2.浏览器向DNS服务器请求解析ip地址 3.dns将解析出来的ip地址返回给浏览器 4.三次握手,浏览器与服务器进行tcp连接…

TVM 从入门到精通 | 安装 TVM (Part 2)

By 超神经内容一览&#xff1a;TVM 共有三种安装方法&#xff1a;从源码安装、使用 Docker 镜像安装和 NNPACK Contrib 安装。本文讲解如何通过 Docker 镜像 和 NNPACK Contrib 安装。关键词&#xff1a;TVM Docker 基础教程 欢迎回到 TVM 文档讲解 101&#xff0c;这个系…

【Python+Appium】开展自动化测试(十二)通过坐标定位元素

目录 前言 1&#xff0c;通过绝对坐标定位&#xff08;不推荐&#xff09; 2&#xff0c;通过相对坐标定位&#xff08;推荐&#xff09; 写在最后 前言 在使用appium做app自动化测试的过程中&#xff0c;可能会遇到元素的属性值不是唯一的情况&#xff0c;导致不能通过fin…

Linux上docker部署Mysql备份与恢复

Linux上Mysql备份与恢复 1.完全备份 完整备份是将所选的全部数据都备份起来&#xff0c;将备份文件生成一个镜像&#xff0c;再保存到其他的硬盘分区中。 1.1 完全备份一个或多个完整的库 ps: 博主mysql是用docker部署的&#xff0c;这时候需要进入docker容器进行操作。 d…

太极限了,JDK的这个BUG都能被我踩到!

之前遇到个文件监听变更的问题&#xff0c;刚好这周末有空研究了一番&#xff0c;整理出来分享给大家。 从一次故障说起 我们还是从故障说起&#xff0c;这样更加贴近实际&#xff0c;也能让大家更快速理解背景。 有一个下发配置的服务&#xff0c;这个配置服务的实现有点特…

详解设计模式:访问者模式

访问者模式&#xff08;Visitor Pattern&#xff09;&#xff0c;是在 GoF 23 种设计模式中定义了的行为型模式。据《大话设计模式》中说算是最复杂也是最难以理解的一种模式了。 访问者模式 是一种将数据操作与数据结构分离的设计模式&#xff0c;它可以算是 23 中设计模式中最…

NewStar CTF Week3Misc 4-5Web

目录 <1> Week-3 Misc (1) Whats HTTP (2) qsdzs girlfriend 3 (3) WebShell&#xff01; (4) 混沌的图像 <1> Week-4 Web (1) So Baby RCE(%0A进行rce rev|sort读取flag) (2) UnserializeThree(%0d换行rce) <2> week5-web (1) Give me your photo…

step-by-step 配置 gtest 在 vscode 测试 c/c++(Ubuntu 环境下示范)

1. 去把 gtest 装好 详见&#xff1a;CSND-PangCoder-[Ubuntu]GTest安装和测试-https://blog.csdn.net/qq_36251561/article/details/85319547 2. 在 VS Code 打上这几个插件 印象里打上 C TestMate 下面的就会自动装了…如果没有就手动装一下 3. 编写测试脚本 第一步那…

【Pytorch】第 1 章 :强化学习和 PyTorch 入门

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…