尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF1045C Hyperspace Highways - Link

CF1045C Hyperspace Highways - Link
📅 发布时间:2026/6/19 8:06:32

发现每个点双内两个点的距离为 \(1\),考虑使用圆方树。
建出圆方树后,方点点权为 \(1\),圆点点权为 \(0\),每次询问求路径上的点权和即可。

代码

#include<bits/stdc++.h>
using namespace std;
namespace IO{template<typename T>inline void read(T&x){x=0;char c=getchar();bool f=0;while(!isdigit(c)) c=='-'?f=1:0,c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();f?x=-x:0;}template<typename T>inline void write(T x){if(x==0){putchar('0');return ;}x<0?x=-x,putchar('-'):0;short st[50],top=0;while(x) st[++top]=x%10,x/=10;while(top) putchar(st[top--]+'0');}inline void read(char&c){c=getchar();while(isspace(c)) c=getchar();}inline void write(char c){putchar(c);}inline void read(string&s){s.clear();char c;read(c);while(!isspace(c)&&~c) s+=c,c=getchar();}inline void write(string s){for(int i=0,len=s.size();i<len;i++) putchar(s[i]);}template<typename T>inline void write(T*x){while(*x) putchar(*(x++));}template<typename T,typename...T2> inline void read(T&x,T2&...y){read(x),read(y...);}template<typename T,typename...T2> inline void write(const T x,const T2...y){write(x),putchar(' '),write(y...),sizeof...(y)==1?putchar('\n'):0;}
}using namespace IO;
const int maxn=100010;
int n,m,q,dfn[maxn],low[maxn],tot,cnt,fa[maxn*2][20],deep[maxn*2],rdeep[maxn*2];
vector<int>e[maxn],st,r[maxn*2];
void dfs(int u){st.push_back(u);dfn[u]=low[u]=++tot;for(int v:e[u]){if(dfn[v]){low[u]=min(low[u],dfn[v]);continue;}dfs(v);low[u]=min(low[u],low[v]);if(low[v]==dfn[u]){cnt++;while(st.back()!=v){r[cnt].push_back(st.back()),r[st.back()].push_back(cnt);st.pop_back();}r[cnt].push_back(st.back()),r[st.back()].push_back(cnt);st.pop_back();r[cnt].push_back(u),r[u].push_back(cnt);}}
}
void dfs2(int u,int fa=0){rdeep[u]=rdeep[fa]+1;::fa[u][0]=fa;for(int i=1;i<=19;i++) ::fa[u][i]=::fa[::fa[u][i-1]][i-1];for(int v:r[u]){if(v==fa) continue;deep[v]=deep[u]+(v>n);dfs2(v,u);}
}
int lca(int u,int v){if(rdeep[u]<rdeep[v]) swap(u,v);for(int i=19;i>=0;i--) if(rdeep[fa[u][i]]>=rdeep[v]) u=fa[u][i];if(u==v) return u;for(int i=19;i>=0;i--) if(fa[u][i]!=fa[v][i]) u=fa[u][i],v=fa[v][i];return fa[u][0];
}
signed main(){read(n,m,q);cnt=n;for(int i=1;i<=m;i++){int u,v;read(u,v);e[u].push_back(v),e[v].push_back(u);}for(int i=1;i<=n;i++) if(dfn[i]==0) dfs(i),st.clear();dfs2(1);for(int i=1;i<=q;i++,write('\n')){int u,v;read(u,v);int l=lca(u,v);write(deep[u]+deep[v]-deep[l]-deep[fa[l][0]]);}return 0;
}

相关新闻

  • 化妆品级褐藻寡糖及褐藻寡糖钾盐:行业热门选择 - 工业设备
  • ESD管电源端口浪涌电流泄放路径设计方案
  • 【Java毕设源码分享】基于springboot+vue的实验室实验报告管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

最新新闻

  • 2026年优秀的pvc管/安徽pvc管/安徽pvc化工管/pvc排水管横向对比厂家推荐 - 行业平台推荐
  • 如何用Python一键下载网易云音乐完整歌单并保留元数据?
  • 2026年靠谱的上海特种电缆/上海PU电缆优质厂家推荐榜 - 品牌宣传支持者
  • 2026年靠谱的pvc给水管/安徽pvc管/pvc排水管可靠供应商推荐 - 行业平台推荐
  • 2026年口碑好的激光切管/济宁激光切管/激光切管代工/济宁激光切管代工精选厂家推荐 - 品牌宣传支持者
  • 青岛即墨区靠谱的空调清洗公司咨询电话(2026最新) - 品牌排行榜

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号