【简单图论】CF898 div4 H

news2024/11/17 11:30:09

Problem - H - Codeforces

题意:

思路:

手玩一下样例就能发现简单结论:

v 离它所在的树枝的根的距离 < m 离这个根的距离时是 YES

否则就是NO

实现就很简单,先去树上找环,然后找出这个根,分别给a 和 b BFS一遍,得出两个dis数组,比较一下即可

对于只有的环情况 和 m = v 的情况需要特判

Code:

#include <bits/stdc++.h>

constexpr int N = 2e5 + 10;
constexpr int M = 1e6 + 10;
constexpr int Inf = 1e9;

std::queue<int> q1, q2;
std::vector<int> adj[N];

int n, a, b;
int top = 0;
int u[N], v[N];
int st[N], r[N];
int dis1[N];
int dis2[N];

int find_r(int u, int fa) {
    if (st[u]) return u;
    st[u] = 1;
    for (auto v : adj[u]) {
        if (v == fa) continue;
        int t = find_r(v, u);
        if (t) {
            r[++ top] = u;
            st[u] = 2;
            return t == u ? 0 : t;
        }
    }
    return 0;
}
void bfs1(int u) {
    memset(dis1, 0x3f, sizeof(dis1));
    dis1[u]= 0;
    q1.push(u);
    while(!q1.empty()) {
        int u = q1.front();
        q1.pop();
        for (auto v : adj[u]) {
            if (dis1[v] > dis1[u] + 1) {
                dis1[v] = dis1[u] + 1;
                q1.push(v);
            }
        }
    }
}
void bfs2(int u) {
    memset(dis2, 0x3f, sizeof(dis2));
    dis2[u] = 0;
    q2.push(u);
    while(!q2.empty()) {
        int u = q2.front();
        q2.pop();
        for (auto v : adj[u]) {
            if (dis2[v] > dis2[u] + 1) {
                dis2[v] = dis2[u] + 1;
                q2.push(v);
            }
        }
    }
}
void solve() {
    std::cin >> n >> a >> b;
    top = 0;
    while(!q1.empty()) q1.pop();
    while(!q2.empty()) q2.pop();
    for (int i = 1; i <= n; i ++) {
        st[i] = 0;
        adj[i].clear();
    }
    for (int i = 1; i <= n; i ++) {
        std::cin >> u[i] >> v[i];
        adj[u[i]].push_back(v[i]);
        adj[v[i]].push_back(u[i]);
    }
    if (a == b) {
        std::cout << "NO" << "\n";
        return;
    }
    find_r(1, 0);
    bfs1(b);
    int miu1 = Inf, ansu = 0;
    for (int i = 1; i <= n; i ++) {
        if (st[i] == 2 && miu1 > dis1[i]) {
            miu1 = dis1[i];
            ansu = i;
        }
    }
    if (st[b] == 2) {
        std::cout << "YES" << "\n";
        return;
    }
    bfs2(a);
    int ans1 = dis2[ansu];
    int ans2 = miu1;
    if (ans1 > ans2) std::cout << "YES" << "\n";
    else std::cout << "NO" << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t = 1;
    std::cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}

 

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

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

相关文章

视频监控系统/视频汇聚平台EasyCVR有下级平台注册时出现断流情况该如何排查解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

手把手教你制作登录、注册界面 SpringBoot+Vue.js(cookie的灵活运用,验证码功能)

一、用户登录界面 实现思路&#xff1a;用户在界面输入用户名和密码传入变量。用post方法传输到后端&#xff0c;后端接收整个实体对象。将用户名提取出。在dao层方法中通过select注解查询&#xff0c;返回数据库对应的数据对象。如果返回为空则return false。不为空则通过比对…

Mock快速入门使用及组件构造首页

一.什么是Mock.js Mock.js&#xff08;也称为 Mockjs 或 Mock.js&#xff09;是一个用于前端开发的模拟数据生成和接口模拟工具。它的主要作用是帮助前端开发人员在开发过程中模拟后端 API 的响应数据&#xff0c;以便进行测试和开发&#xff0c;而无需实际后端服务器支持。 模…

进灰的iPhone是印度组装?且慢嘲讽,这是中国制造!

苹果的iPhone15Pro max被拆机发现镜头出现灰尘&#xff0c;一些人士第一时间就说是印度制造&#xff0c;然而这些拆机博主晒出的图片显示却是中国制造&#xff0c;显然这与一些人士的预期有所不同&#xff0c;导致如此结果可能与iPhone的组装工期太紧张有关。 苹果的iPhone15生…

力扣刷题-链表-删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a;输入&#xff1a;head [1], n 1 输出&…

网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业

很多人上来就说想学习黑客&#xff0c;但是连方向都没搞清楚就开始学习&#xff0c;最终也只是会无疾而终&#xff01;黑客是一个大的概念&#xff0c;里面包含了许多方向&#xff0c;不同的方向需要学习的内容也不一样。 算上从学校开始学习&#xff0c;已经在网安这条路上走…

软件设计模式系列之十五——职责链模式

1 模式的定义 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;也称为责任链模式&#xff0c;是一种结构型设计模式&#xff0c;用于构建一条对象处理请求的责任链。在这个模式中&#xff0c;多个对象依次处理请求&#xff0c;直到其中一个对象能够处理该请…

Linux系统编程(五):信号

参考引用 UNIX 环境高级编程 (第3版)黑马程序员-Linux 系统编程 1. 信号基础理论 1.1 概念和机制 概念 信号在生活中随处可见&#xff0c;如&#xff1a;古代战争中摔杯为号、现代战争中的信号弹、体育比赛中使用的信号枪他们都有共性&#xff1a;简单、不能携带大量信息、满足…

你是怎么理解自动化测试的?理解自动化测试的目的和本质

其实自动化测试很好理解&#xff0c;由两部分组成&#xff0c;“自动化”和“测试”&#xff0c;所以我们要理解自动化测试&#xff0c;就必须理解“自动化”和“测试”&#xff0c;只有理解了这些概念&#xff0c;才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过…

【Solidity】Solidity Keccak256 与 SHA3-256

Solidity Keccak256 与 SHA3-256 文章目录 前言什么是 SHA3Keccak256 和 SHA3-256 有什么区别?为何推出sha3参考区块链的造富神话大家一定都有所耳闻,今天我们讨论以太坊中一项基础技术,主打一个一学就会。 前言 看过以太坊源码或者对区块链有了解的的同学,一定都见过一个…

springboot集成quartz并实现定时任务管理

依赖&#xff1a; <quartz.version>2.3.0</quartz.version><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version><exclusions><exclus…

内存管理和模板

目录 定位new表达式 定位new使用的池化技术&#xff1a; ​编辑 malloc和free与new和delete的区别&#xff1a; 内存泄漏&#xff1a; 模板 显示实例化 两个不同参数的模板 模板函数与函数&#xff1a; 类模板 []重载&#xff1a; 定位new表达式 class A { public:A(int …

基于yum制作kylin系统docker镜像

[rootlocalhost yeqiang]# yum install --installroot/home/yeqiang/kylin-docker/ yum 无法找到发布版本&#xff08;可用 --releasever 指定版本&#xff09; 警告&#xff1a;加载 /etc/yum.repos.d/ceph.repo 失败&#xff0c;跳过。 上次元数据过期检查&#xff1a;0:00:…

核货宝:服装店收银系统一般有哪些功能

服装店收银系统是店铺用于管理和处理销售交易的软件系统。它提供了一系列功能和工具&#xff0c;使服装店能高效地进行销售和收款操作。以下是服装店收银系统一般具备的功能&#xff1a; 1. 商品管理&#xff1a;包括商品的基本信息&#xff08;名称、价格、库存等&#xff09;…

睿趣科技:抖音开通蓝V怎么操作的

在抖音这个充满创意和活力的社交媒体平台上&#xff0c;蓝V认证成为了许多用户的梦想之一。蓝V认证不仅是身份的象征&#xff0c;还可以增加用户的影响力和可信度。但是&#xff0c;要在抖音上获得蓝V认证并不是一件容易的事情。下面&#xff0c;我们将介绍一些操作步骤&#x…

word怎么删除空白页?图文详解来了(3种方法)

word是最常用的文档编辑工具之一&#xff0c;但有时在编辑文档时&#xff0c;我们会遇到一个常见问题&#xff0c;那就是不小心插入了空白页。这些空白页可能会破坏文档的布局&#xff0c;使其看起来不专业。那word怎么删除空白页呢&#xff1f;幸运的是&#xff0c;word提供了…

【AD】【pcb】【布线经验】打孔的目的

打孔的目的 就像老师说的&#xff0c;把GND层比作是大海&#xff0c;当拉线引流的时候&#xff0c;需要流动一定的路径。如果直接打孔&#xff0c;可以省略掉这部分路径。 现在知道了为什么&#xff0c;看别人布的板子 铺铜的时候&#xff0c;是一大片 一大片的在布的 然而也…

阿里云通义千问14B模型开源!性能超越Llama2等同等尺寸模型

9月25日&#xff0c;阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。Qwen-14B在多个权威评测中超越同等规模模型&#xff0c;部分指标甚至接近Llama2-70B。阿里云此前开源了70亿参数模型Qwen-7B等&#xff0c;一个多月下载量破100万&#xff0…

LeetCode 1173.即时食物配送

数据准备 drop table Delivery;Create table If Not Exists Delivery (delivery_id int, customer_id int, order_date date, customer_pref_delivery_date date); Truncate table Delivery; insert into Delivery (delivery_id, customer_id, order_date, customer_pref_deli…

设备自动化系统EAP在晶圆厂的关键作用

在现代晶圆厂中&#xff0c;设备自动化系统&#xff08;Equipment Automation Programming&#xff0c;EAP&#xff09;已经成为了不可或缺的关键要素。EAP系统不仅是生产自动化的重要组成部分&#xff0c;更是连接制造执行系统&#xff08;MES&#xff09;与设备之间的桥梁&am…