当前位置: 首页 > news >正文

惠州网站制作定制和平天津网站建设

惠州网站制作定制,和平天津网站建设,如何建设一个网站站,wordpress手机号登陆不了目录 题目算法标签: 并查集, 贪心, 树上倍增, 最小生成树, l c a lca lca思路代码 题目 506. 货车运输 算法标签: 并查集, 贪心, 树上倍增, 最小生成树, l c a lca lca 思路 因为要求路径上 u u u到 v v v路径上最小承载路径最大, 首先要求的是两个点是连通的, 因此可以…

题目

506. 货车运输
在这里插入图片描述

算法标签: 并查集, 贪心, 树上倍增, 最小生成树, l c a lca lca

思路

因为要求路径上 u u u v v v路径上最小承载路径最大, 首先要求的是两个点是连通的, 因此可以求最大生成树, 然后在最大生成树上求路径上的边的最小值, 由于树上两个点之间的路径是确定的, 因此可以使用倍增进行优化, 时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 10010, M = 50010, K = 15, INF = 0x3f3f3f3f;int n, m, q;
int head[N], ed[N << 1], ne[N << 1], w[N << 1], idx;
int fa[N][K], f[N][K], depth[N];
int p[N];struct Edge {int u, v, w;bool operator<(const Edge &e) const {return w > e.w;}
} edges[M];void add(int u, int v, int val) {ed[idx] = v, ne[idx] = head[u], w[idx] = val, head[u] = idx++;
}int find(int u) {if (p[u] != u) p[u] = find(p[u]);return p[u];
}void kruskal() {sort(edges, edges + m);for (int i = 0; i < m; ++i) {auto [u, v, w] = edges[i];int fa1 = find(u);int fa2 = find(v);if (fa1 == fa2) continue;p[fa2] = fa1;add(u, v, w), add(v, u, w);}
}void dfs(int u, int pre, int dep) {depth[u] = dep;for (int i = head[u]; ~i; i = ne[i]) {int v = ed[i];if (v == pre) continue;fa[v][0] = u;f[v][0] = w[i];for (int k = 1; k < K; ++k) {fa[v][k] = fa[fa[v][k - 1]][k - 1];f[v][k] = min(f[v][k - 1], f[fa[v][k - 1]][k - 1]);}dfs(v, u, dep + 1);}
}int calc(int u, int v) {if (find(u) != find(v)) return -1;int ans = INF;if (depth[u] < depth[v]) swap(u, v);// 将u上提到与v相同深度for (int k = K - 1; k >= 0; --k) {if (depth[fa[u][k]] >= depth[v]) {ans = min(ans, f[u][k]);u = fa[u][k];}}if (u == v) return ans;// 同时上提u和vfor (int k = K - 1; k >= 0; --k) {if (fa[u][k] != fa[v][k]) {ans = min({ans, f[u][k], f[v][k]});u = fa[u][k];v = fa[v][k];}}ans = min({ans, f[u][0], f[v][0]});return ans;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(head, -1, sizeof head);memset(f, 0x3f, sizeof f);cin >> n >> m;for (int i = 1; i <= n; ++i) p[i] = i;for (int i = 0; i < m; ++i) {int u, v, w;cin >> u >> v >> w;edges[i] = {u, v, w};}kruskal();for (int i = 1; i <= n; ++i) {if (depth[i] == 0) dfs(i, -1, 1);}cin >> q;while (q--) {int u, v;cin >> u >> v;int ans = calc(u, v);cout << ans << "\n";}return 0;
}
http://www.dtcms.com/a/512437.html

相关文章:

  • 电子网站建设价格怎样建立自己网站多少钱
  • 鸿蒙开发的三种能力集以及错误的产生条件
  • 西陆房产系统小程序
  • 方正悠黑使用网站建设侵权么触屏手机网站
  • ELK运维之路(Logstash-高级功能-7.17.24)
  • Harmony鸿蒙开发0基础入门到精通Day02--JavaScript篇
  • k8s部署容器化应用-nginx
  • Linux 根分区爆满排查与解决
  • 南阳东莞网站建设公司天津中冀建设集团有限公司网站
  • linux下虚拟机下安装一个本地yum源
  • SSH密钥认证:从密码到密钥的安全升级指南
  • 企业网站建设平台求职简历模板免费
  • 设计素材网站月收益php+mysql网站开发...
  • 网站建设实现后台数据导出excel公司网站数据库表设计
  • Docker Compose、私有镜像站和Swam集群
  • 【STL——stack容器】
  • DeepSeek-OCR:上下文光学压缩
  • QML 模块解析:从核心模块分类介绍到实际应用的组件与功能说明(之二)
  • 凡科建设网站我对网站开发的反思
  • 东莞专业的网站设计价格领先的手机网站设计
  • SQLite数据库查询
  • Python列表(List)完全指南:从入门到实战优化
  • DeepSeek刚刚开源了一个3B的 OCR模型:什么是DeepSeek-OCR?单张A100-40G每天可以处理20万+页文档
  • html5企业网站赏析石家庄专门做网站
  • 颍上县住房和城乡建设局网站深圳网络工程公司
  • ESP32学习笔记(基于IDF):ESP32连接MQTT服务器
  • 网站建设敬请期待图片素材wordpress 获取菜单id
  • 做网站用什么源码最好wordpress建站优势
  • 网站图标 代码微信开发网站建设程序
  • 修改 Docker 容器中 MySQL 8.0 默认编码为 utf8mb4_unicode_ci