CF555E

news/2025/2/13 15:27:21/文章来源:https://www.cnblogs.com/Xdik/p/18713702

这个题看着就和图的连通性有关,排除点双,所以就用边双了。所以先进行一次边双缩点。首先不在一个连通块里的显然是无解的,然后再分 \(s\)\(t\) 是否在一个边双里面进行讨论。如果 \(s\)\(t\) 在一个边双里面,这种情况一定是有解的。如果 \(s\)\(t\) 不在一个边双里面,就直接在 \(s\)\(lca\) 的路径上打上向上的标记,在 \(lca\)\(t\) 的路径上打上向下的标记,这里可以使用树上差分,最后看每个点是否只有向上或者向下或者没有标记即可

#include <bits/stdc++.h>
//#define int long long
#define ull unsigned long long
#pragma GCC optimeze(3)
#pragma GCC optimeze(2)
#define PII pair<int, int>
#define pb push_back
#define fi first
#define se second
#define lowbit(x) (x & (-x))
#define inv(x) (qpow(x,mod-2))
#define blong(i) ((i+K-1)/K)
using namespace std;
const int N=2e5+10;
const int M=3e2+5;
const int mod=9901;
double eps=1e-6;
inline int read(){char ch=getchar();bool f=0;int x=0;for(;!isdigit(ch);ch=getchar())if(ch=='-')f=1;for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+(ch^48);if(f==1)x=-x;return x;
}
int n,m,k,bj1[N],bj2[N],u[N],v[N],dep[N],fa[N][20],bj[N],dfn[N],low[N],dfc,edc[N],cnt;
vector<int>G[N],G2[N];
void dfs(int t){bj[t]=dfc;for(auto to:G2[t]){if(to==fa[t][0])continue;fa[to][0]=t,dep[to]=dep[t]+1;dfs(to);}
}
stack<int>S;
void tj(int t,int fr){dfn[t]=low[t]=++dfc;S.push(t);for(auto ed:G[t]){int to=u[ed]+v[ed]-t;if(!dfn[to]){tj(to,ed);low[t]=min(low[t],low[to]);}else if(fr!=ed)low[t]=min(low[t],dfn[to]);}if(low[t]==dfn[t]){cnt++;while(S.top()!=t)edc[S.top()]=cnt,S.pop();edc[S.top()]=cnt,S.pop();}
}
int lca(int x,int y){if(dep[x]<dep[y])swap(x,y);for(int i=19;i>=0;i--){if(dep[fa[x][i]]>=dep[y])x=fa[x][i];}if(x==y)return x;for(int i=19;i>=0;i--){if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i];} return fa[x][0];
}
void dfs2(int t){bj[t]=1;for(auto to:G2[t]){if(bj[to])continue;dfs2(to);bj1[t]+=bj1[to],bj2[t]+=bj2[to];}if(bj1[t]&&bj2[t]){cout<<"No";exit(0);}
}
signed main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m>>k;for(int i=1;i<=m;i++){cin>>u[i]>>v[i];G[u[i]].pb(i),G[v[i]].pb(i); }for(int i=1;i<=n;i++){if(!dfn[i])tj(i,0);}for(int i=1;i<=n;i++){for(auto ed:G[i]){int to=u[ed]+v[ed]-i;if(edc[to]!=edc[i])G2[edc[i]].pb(edc[to]);} }dfc=0;for(int i=1;i<=cnt;i++){if(!bj[i])dfc++,dep[i]=1,dfs(i); }for(int j=1;j<=19;j++){for(int i=1;i<=cnt;i++){fa[i][j]=fa[fa[i][j-1]][j-1];}}while(k--){int s,t;cin>>s>>t;s=edc[s],t=edc[t];if(bj[s]!=bj[t]){cout<<"No";return 0;}if(s==t)continue;int l=lca(s,t);bj1[s]++,bj1[l]--,bj2[t]++,bj2[l]--;}memset(bj,0,sizeof bj);for(int i=1;i<=cnt;i++){if(!bj[i])dfs2(i);}cout<<"Yes";return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deepseek学习随笔(2)--- 快速上手DeepSeek

注册与登录 要开始使用 DeepSeek,你需要先注册一个账号。以下是具体步骤:访问 DeepSeek 官网。 使用邮箱或手机号注册账号。 登录后进入控制台,开始使用。控制台功能介绍 DeepSeek 的控制台提供了丰富的功能,帮助你更好地使用工具:对话窗口:在这里输入你的问题或指令,De…

【原创】大数据治理入门(4)《保护数据隐私:大数据治理的最佳实践》入门必看 高赞实用

在大数据治理中,保护数据隐私是至关重要的。通过了解和遵守相关法规,采用数据脱敏、匿名化和隐私计算等技术手段,企业可以有效降低数据隐私泄露的风险,提升用户的信任度和企业的竞争力。希望本文能够为您提供全面的数据隐私保护指南。保护数据隐私:大数据治理的最佳实践 引…

【原创】大数据治理入门(1)《大数据治理入门:为什么重要?》入门必看 高赞实用

随着互联网的快速发展,数据的生成和积累速度达到了前所未有的水平。大数据通常被定义为规模巨大、类型多样且生成速度快的数据集合。这些数据不仅包括结构化数据(如数据库中的表格数据),还包括非结构化数据(如文本、图片、视频等)。大数据的重要性在于其能够帮助企业更好…

【MySQL安全】复现Mysql LOAD DATA 读取客户端任意文件漏洞

前言 MySQL 客户端和服务端通信过程中是通过对话的形式来实现的,客户端发送一个操作请求,然后服务端根据客户端发送的请求来响应客户端,在这个过程中客户端如果一个操作需要两步才能完成,那么当它发送完第一个请求过后并不会存储这个请求,而是直接丢弃,所以第二步就是根据…

线程/进程

进程 1.是资源分配的基本单元 2.拥有独立的内存空间和资源 3.开销较大 4.稳定性高,一个进程的崩溃不会影响其他的进程 线程 1.是cpu调度的基本单元 2.共享进程的资源 3.开销较小 4.稳定性不高,一个线程崩溃可能会导致其他线程的崩溃当我们写完一个线程之后可以通过idea的安装…

nginx代理grafana配置

配置grafna的nginx代理配置环境背景:监控系统用的是Prometheus+altermanager+grafana+xxx-exporter实现的,现在业界内的夜莺监控系统已经非常的成熟了,使用夜莺管理配置监控相对比Prometheus+altermanager要友好很多,使用也方便,直接页面配置就好。但是相对图表化的监控信…

IPD流程管理之市场需求精准把握方法

IPD(Integrated Product Development)流程管理旨在通过整合产品开发的各个环节,实现高效、高质量的产品交付。在这一过程中,精准把握市场需求是成功的关键。只有深入了解市场需求,企业才能开发出符合客户期望的产品,从而在激烈的市场竞争中占据优势。本文将详细探讨IPD流…

VSCode 搭建 MySQL 源码调试环境

在使用MySQL数据库的过程中,如果遇到一些复杂的问题,可以通过GDB进行调试,本篇将演示如何在Win 10环境基于VSCode搭建MySQL源码调试环境。 一、调试环境 本次调试需要用到的软件和环境为:Red Hat Enterprise Linux release 8.10 (Ootpa) MySQL 8.0.40 VSCode 1.96.4二、编译…

MAC鼠标滚轮反向问题

找系统设置中 --》鼠标--〉关闭自然滚动设置博客园地址:https://www.cnblogs.com/lixiuming521125/

开发者福音!TinyEngine服务端Java版本正式开源

本次 TinyEngine 低代码引擎服务端 Java 版本代码的开源,让开发者能够深入了解 TinyEngine 低代码引擎的前后端运行机制。摘要:本次 TinyEngine 低代码引擎服务端 Java 版本代码的开源,让开发者能够深入了解 TinyEngine 低代码引擎的前后端运行机制。本文分享自华为云社区《…

ZeRO, ZeRO-Offload, ZeRO-Infinite, ZeRO++

目录概MotivationZeROZeRO-OffloadZeRO-InfiniteZeRO++代码Rajbhandari S., Rasley J., Ruwase O. and He Y. ZeRO: Memory optimizations toward training trillion parameter models. InSC, 2020.Ren J., Rajbhandari S., Aminabadi R. Y., Ruwase O., Yang S., Zhang M., Li…

IPD流程如何推动企业数字化转型

企业数字化转型已成为当下众多企业寻求突破与发展的关键战略方向。在这一进程中,集成产品开发(IPD)流程发挥着不可忽视的重要作用。IPD流程并非简单的产品开发流程,它涵盖了从产品战略规划、概念设计、详细设计、开发、测试到上市等一系列环节,是一个系统性的、端到端的流…