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

如何在外贸平台推广/seo上海培训

如何在外贸平台推广,seo上海培训,广东微信网站制作公司,武汉光谷做网站价格处理仙人掌 ---> 首先建立出圆方树。则如果询问的两点 \(lca\) 为圆点&#xff0c;直接计算即可&#xff0c; 若 \(lca\) 为方点&#xff0c;则需要额外判断是走环的哪一侧&#xff08;此时与两个点在环上的相对位置有关。&#xff09; #include <bits/stdc.h> using …

  处理仙人掌 ---> 首先建立出圆方树。则如果询问的两点 \(lca\) 为圆点,直接计算即可, 若 \(lca\) 为方点,则需要额外判断是走环的哪一侧(此时与两个点在环上的相对位置有关。)

#include <bits/stdc++.h>
using namespace std;
#define maxn 200000
#define int long long
#define CNST 20
int n, m, Q, gra[maxn][CNST];
int N, dfn[maxn], low[maxn], timer;
int S[maxn], dis[maxn], bk[maxn];
int dep[maxn], fa[maxn], id[maxn];
int A, B;struct edge
{int cnp, head[maxn], to[maxn], last[maxn], w[maxn];edge() { cnp = 1; }void add(int u, int v, int ww){to[cnp] = v, last[cnp] = head[u], w[cnp] = ww, head[u] = cnp ++;to[cnp] = u, last[cnp] = head[v], w[cnp] = ww, head[v] = cnp ++;}
}E1, E2;int read()
{int x = 0, k = 1;char c;c = getchar();while(c < '0' || c > '9') { if(c == '-') k = -1; c = getchar(); }while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x * k;
}void Solve(int u, int v, int w)
{N ++; int pre = w, ID = 0;bool flag = 0;for(int i = v; i != fa[u]; i = fa[i]){S[i] = pre; pre += bk[i];id[i] = ++ ID;}S[N] = S[u]; S[u] = 0;for(int i = v; i != fa[u]; i = fa[i]) E2.add(N, i, min(S[i], S[N] - S[i]));
}void Tarjan(int u)
{dfn[u] = low[u] = ++ timer; for(int i = E1.head[u]; i; i = E1.last[i]){int v = E1.to[i]; if(v == fa[u]) continue;if(!dfn[v]) bk[v] = E1.w[i], fa[v] = u, Tarjan(v), low[u] = min(low[u], low[v]);else low[u] = min(low[u], dfn[v]);if(low[v] > dfn[u]) E2.add(u, v, E1.w[i]);}for(int i = E1.head[u]; i; i = E1.last[i]){int v = E1.to[i];if(fa[v] != u && dfn[v] > dfn[u]) Solve(u, v, E1.w[i]);}
}void dfs(int u, int ff)
{gra[u][0] = ff; dep[u] = dep[ff] + 1;for(int i = 1; i < CNST; i ++) gra[u][i] = gra[gra[u][i - 1]][i - 1]; for(int i = E2.head[u]; i; i = E2.last[i]){int v = E2.to[i];if(v != ff) bk[v] = E2.w[i], dis[v] = dis[u] + E2.w[i], dfs(v, u);}
}int LCA(int x, int y)
{if(dep[x] < dep[y]) swap(x, y);for(int i = CNST - 1; ~i; i --)if(dep[gra[x][i]] >= dep[y]) x = gra[x][i];for(int i = CNST - 1; ~i; i --)if(gra[x][i] != gra[y][i]) x = gra[x][i], y = gra[y][i];A = x, B = y;return x == y ? x : gra[x][0];
}signed main()
{n = read(), m = read(), Q = read();for(int i = 1; i <= m; i ++){int u = read(), v = read(), w = read();E1.add(u, v, w);}N = n; Tarjan(1); dfs(1, 0);while(Q --){int u = read(), v = read();int lca = LCA(u, v);if(lca <= n) printf("%lld\n", dis[u] + dis[v] - 2 * dis[lca]);else{int ans = dis[u] + dis[v] - dis[A] - dis[B];if(id[A] <= id[B]) swap(A, B);ans += min(S[A] - S[B], S[lca] - S[A] + S[B]);printf("%lld\n", ans);}}return 0;
}

 

转载于:https://www.cnblogs.com/twilight-sx/p/9218236.html

http://www.lbrq.cn/news/1453681.html

相关文章:

  • 专做定制网站建设/百度关键词查询网站
  • 新媒体营销策划方案范文/网站推广优化排名教程
  • wordpress微商插件/seo怎么收费的
  • 云南网站设计/网站推广方案策划书2000
  • 新开的公司建立网站有哪些要做的/海淀区seo搜索引擎
  • 武汉平面设计公司/如何seo搜索引擎优化
  • 网站不备案可以做百度推广吗/产品软文范例500字
  • 网站建设方案及预算/5118站长工具
  • 网站开发手机app/谷歌浏览器app下载
  • 重复建设政务网站/苹果被曝开发搜索引擎对标谷歌
  • 济南集团网站建设公司好/孝感seo
  • 青田县住房和城乡规划建设局网站/企业管理培训
  • 网站 被 抄袭/seo域名如何优化
  • 什么是html5网站/竞价托管代运营公司
  • 自己做的网站套dedecms教程/国家反诈中心app下载
  • 网站手机pc同步/广州网站快速优化排名
  • python web/百度网站排名关键词整站优化
  • 做网站责任/济南头条新闻热点
  • 网站建设找实体还是淘宝/附近的电脑培训班在哪里
  • 网站建设中广告图片尺寸/网站推广的概念
  • 长治企业网站建设价格/百度识图搜索网页版
  • 石湾网站制作/在线代理浏览网站
  • 周口规划建设局网站/网络推广方法有哪几种
  • 上海 网站制作/百度人工申诉客服电话
  • 地铁建设优缺点/兰州seo培训
  • 自己如何高效有力的维护一个网站/长沙网络推广网站制作
  • 西安做网站哪家好/中国十大电商平台排名
  • 个人建设网站需要什么证件吗/东莞关键词排名快速优化
  • 茶山东莞网站建设/网站cms
  • 杭州外贸公司/seo模拟点击有用吗
  • 力扣热题100------21.合并两个有序链表
  • LeetCode 132:分割回文串 II
  • 数据结构:如何判断一个链表中是否存在环(Check for LOOP in Linked List)
  • Go语言高并发价格监控系统设计
  • 基于高斯光束干涉的微球体相位成像系统设计与实现
  • 03.一键编译安装Redis脚本