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

0924

0924
📅 发布时间:2026/6/19 18:21:56

https://www.luogu.com.cn/problem/P1967

换了一种做法做出来了

不记得老师之前怎么讲的

  1 #include<bits/stdc++.h>
  2 #define R 200001
  3 using namespace std;
  4 int n,m,cnt,q;
  5 struct node
  6 {
  7     int u,v,dis;
  8 }edge[R];
  9 bool cmp(node a,node b)
 10 {
 11     return a.dis>b.dis;
 12 }
 13 struct node2
 14 {
 15     int v,nxt;
 16 }E[R];
 17 int head[R],tmp;
 18 int val[R],ff[R],vis[R];
 19 int fa[R],top[R],son[R];
 20 int size[R],dep[R];
 21 void add(int u,int v)
 22 {
 23     E[++tmp].nxt=head[u];
 24     E[tmp].v=v;
 25     head[u]=tmp;
 26 }
 27 int find(int x)
 28 {
 29     if(x==ff[x]) return x;
 30     else return ff[x]=find(ff[x]);
 31 }
 32 void dfs1(int u,int pa)
 33 {
 34     size[u]=1;
 35     vis[u]=1;
 36     for(int i=head[u];i;i=E[i].nxt)
 37     {
 38         int v=E[i].v;
 39         if(v==pa) continue;
 40         dep[v]=dep[u]+1;
 41         fa[v]=u;
 42         dfs1(v,u);
 43         size[u]+=size[v];
 44         if(size[v]>size[son[u]]) son[u]=v;
 45     }
 46 }
 47 void dfs2(int u,int tp)
 48 {
 49     top[u]=tp;
 50     if(son[u]) dfs2(son[u],tp);
 51     for(int i=head[u];i;i=E[i].nxt)
 52     {
 53         int v=E[i].v;
 54         if(v==fa[u]||v==son[u]) continue;
 55         dfs2(v,v);
 56     }
 57 }
 58 void kruskal()
 59 {
 60     sort(edge+1,edge+1+m,cmp);
 61     for(int i=1;i<=n;i++) ff[i]=i;
 62     for(int i=1;i<=m;i++)
 63     {
 64         int fu=find(edge[i].u),fv=find(edge[i].v);
 65         if(fu!=fv)
 66         {
 67             val[++cnt]=edge[i].dis;
 68             ff[cnt]=ff[fu]=ff[fv]=cnt;
 69             add(fu,cnt),add(cnt,fu),add(fv,cnt),add(cnt,fv);
 70         }
 71     }
 72     for(int i=1;i<=cnt;i++)
 73     {
 74         if(!vis[i])
 75         {
 76             int f=find(i);
 77             dfs1(f,0);
 78             dfs2(f,f);
 79         }
 80     }
 81 }
 82 int LCA(int u,int v)
 83 {
 84     while(top[u]!=top[v])
 85     {
 86         if(dep[top[u]]>dep[top[v]]) u=fa[top[u]];
 87         else v=fa[top[v]];
 88     }
 89     return dep[u]<dep[v]?u:v;
 90 }
 91 int main()
 92 {
 93     cin>>n>>m;
 94     cnt=n;
 95     for(int i=1;i<=m;i++) cin>>edge[i].u>>edge[i].v>>edge[i].dis;
 96     kruskal();
 97     cin>>q;
 98     while(q--)
 99     {
100         int u,v;
101         cin>>u>>v;
102         if(find(u)!=find(v)) puts("-1");
103         else cout<<val[LCA(u,v)]<<endl;;
104     }
105     return 0;
106 }
View Code

 

相关新闻

  • 扫描线学习笔记
  • AI完美声音克隆及情绪控制,与真人无异,Lark下载介绍
  • mysql慢sql配置

最新新闻

  • 2026亲测:专业降AIGC软件选它准没错 - 降AI小能手
  • LeagueAkari:基于LCU API的英雄联盟客户端工具包实现多数据源整合架构设计
  • 2026防晒墨镜哪些品牌排名高?TOP5清单出炉 - 速递信息
  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 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 号