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

自己做网站需要什么程序nba排名最新赛程

自己做网站需要什么程序,nba排名最新赛程,字体设计生成器,自己做网站流程Description 给定一棵 n n n 个点的树,每条边权值均为 1 1 1,树上有 k k k 个关键点,关键点们在 0 0 0 的时间内相互可达, q q q 次询问,求 s → t s\to t s→t 的最短路。 Analysis 考虑暴力建图,…

Description

给定一棵 n n n 个点的树,每条边权值均为 1 1 1,树上有 k k k 个关键点,关键点们在 0 0 0 的时间内相互可达, q q q 次询问,求 s → t s\to t st 的最短路。

Analysis

考虑暴力建图,则图上共有 ( n − 1 + n ( n − 1 ) 2 ) (n-1+\frac{n(n-1)}{2}) (n1+2n(n1))条边,在 n , k n,k n,k 均为最大的情况下,图上共有大约 2 × 1 0 10 2 \times 10^{10} 2×1010 条边,铁定 MLE

我们注意到,从 s s s t t t 只有两种情况:

  • 老老实实从树上走;
  • s s s 走到一个关键点 k 1 k_1 k1,穿越到另一个关键点 k 2 k_2 k2,再走到 t t t

第一种情况就是常规树上两点最短路。
第二种情况,根据贪心思想,选取的 k 1 , k 2 k_1,k_2 k1,k2 一定是距离 s , t s,t s,t 最近的两个。所以我们初始时一次 bfs 求出每个点 i i i 到传送门的距离 d s t i dst_i dsti,最终答案即为 d s t s + d s t t dst_s+dst_t dsts+dstt

Code

// Problem: P10289 [GESP样题 八级] 小杨的旅游
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P10289
// Memory Limit: 512 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include <iostream>
#include <queue>
#include <cmath>
using namespace std;using Graph = vector<vector<int>>;
const int INF = 1e9;struct LCA{int n, k;vector<int> dep;vector<vector<int>> f;Graph G;LCA() {}LCA(const Graph &tree): G(tree){n = G.size();k = (int)log2(n) + 1;dep.assign(n, 0);f.assign(n, vector<int>(k, -1));dfs(0, 0);}void dfs(int u, int fa){dep[u] = dep[fa] + 1;f[u][0] = fa;for(int i = 1; i < k; i++) f[u][i] = f[f[u][i - 1]][i - 1];for(auto v: G[u]){if(v == fa) continue;dfs(v, u);}}int lca(int x, int y){if(dep[x] < dep[y]) swap(x, y);for(int i = k - 1; i >= 0; i--)if(dep[f[x][i]] >= dep[y]) x = f[x][i];if(x == y) return x;for(int i = k - 1; i >= 0; i --)if(f[x][i] != f[y][i]){x = f[x][i];y = f[y][i];}return f[x][0];}int dist(int x, int y){return dep[x] + dep[y] - 2 * dep[lca(x, y)];}};signed main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int n, k, q;cin >> n >> k >> q;Graph G(n);for (int i = 0, u, v; i < n - 1; i++) {cin >> u >> v;u--, v--;G[u].push_back(v);G[v].push_back(u);}LCA tree(G);queue<int> que;vector<int> dis(n, INF);for (int i = 0, x; i < k; i++) {cin >> x;x--;que.push(x);dis[x] = 0;}while (que.size()) {int u = que.front();que.pop();for (auto v: G[u])if (dis[v] == INF) {dis[v] = dis[u] + 1;que.push(v);}}auto dist = [&](int x, int y) {return min(tree.dist(x, y), dis[x] + dis[y]);};for (int i = 0, u, v; i < q; i++) {cin >> u >> v;u--, v--;cout << dist(u, v) << endl;}return 0;
}
http://www.tj-hxxt.cn/news/69266.html

相关文章:

  • 如何制作网站app郑州seo团队
  • 烟台网站建设哪家好打广告在哪里打最有效
  • 外贸网站建设 惠州商务软文写作范文200字
  • 电商网站首页图片切换怎么做的百度地图推广怎么做的
  • 天津开发网站公司百度推广运营这个工作好做吗
  • 网站开发会计科目网络推广外包内容
  • 那些网站可以做外链今日武汉最新消息
  • 做淘宝店头的网站唐山网站建设方案优化
  • 建设网站的技术风险aso优化{ }贴吧
  • seo做关键词怎么收费的网络优化培训要多少钱
  • 页面跳转是什么意思国外seo
  • 十堰网站建设哪家好媒体公关
  • 网站优化常见的优化技术推广产品的软文怎么写
  • 邯郸手机建站价格推广普通话奋进新征程演讲稿
  • 给网站做公正需要带什么免费域名注册申请
  • 网站设计证书西安百度公司地址介绍
  • 信用网站一体化建设方案泉州百度关键词优化
  • 重庆知道推广网站方法如何进行电子商务网站推广
  • 潍坊企业做网站最近的新闻有哪些
  • 动态网站系统是什么在线刷关键词网站排名
  • 政府网站制作费用哪些行业适合做网络推广
  • 做美图 网站有哪些凡科小程序
  • 企业收录网站有什么用网络营销推广流程
  • 蓝色门户网站沈阳seo排名优化教程
  • web网站开发依据爱网站
  • 偷拍网站做沈阳百度推广哪家好
  • 做僾免费观看网站seminar什么意思中文
  • 做泵阀生意到哪个网站怎么制作网页推广
  • 免费网站统计广州网络营销推广
  • 网站收录不增加大数据营销成功案例