分析

我们知道答案一定再最小生成树上

于是我们按边权从小到大建立kruskal重构树

然后每次查询lca的值即可

由于询问较多采用st表维护lca

代码

格式化代码
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9+;
struct node {
int x,y,z;
};
node d[];
vector<int>v[];
int lg[],A,B,C,P,dep[],no[];
int pr[][],val[],cnt,n,m,q,T,fa[];
inline int rnd(){return A=(A*B+C)%P;}
inline int mmin(int x,int y){return dep[x]<dep[y]?x:y;}
inline int sf(int x){return fa[x]==x?x:fa[x]=sf(fa[x]);}
inline bool cmp(const node x,const node y){return x.z<y.z;}
inline int que(int x,int y){int k=lg[y-x+];return mmin(pr[x][k],pr[y-(<<k)+][k]);}
inline void dfs(int x,int f){
dep[x]=dep[f]+;
pr[++T][]=x;
no[x]=T;
for(int i=;i<v[x].size();++i){
dfs(v[x][i],x);
pr[++T][]=x;
}
}
inline int ra(){
int x=;char s=getchar();
while(!isdigit(s))s=getchar();
while(isdigit(s))x=(x<<)+(x<<)+(s-''),s=getchar();
return x;
}
int main(){
int i,j,k,Ans=;
n=ra(),m=ra();
for(i=;i<=m;++i)d[i].x=ra(),d[i].y=ra(),d[i].z=ra();
sort(d+,d+m+,cmp);
for(i=;i<=*n;++i)fa[i]=i;
k=,cnt=n;
for(i=;i<=m;++i){
int x=d[i].x,y=d[i].y;
if(sf(x)!=sf(y)){
v[++cnt].push_back(sf(x));
v[cnt].push_back(sf(y));
fa[sf(x)]=fa[sf(y)]=cnt;
val[cnt]=d[i].z;
k++;
}
if(k==n-)break;
}
dfs(cnt,);
lg[]=;
for(i=;i<=T;++i)lg[i]=lg[i>>]+;
for(i=;i<=;++i)
for(j=;j+(<<i)<=T;++j)
pr[j][i]=mmin(pr[j+(<<(i-))][i-],pr[j][i-]);
q=ra(),A=ra(),B=ra(),C=ra(),P=ra();
while(q--){
int x=rnd()%n+,y=rnd()%n+;
x=no[x],y=no[y];
if(x>y)swap(x,y);
Ans=Ans+val[que(x,y)];
Ans=(Ans>mod?Ans-mod:Ans);
}
printf("%d\n",Ans);
return ;
}

loj#137 最小瓶颈路 加强版的更多相关文章

  1. LOJ#137. 最小瓶颈路 加强版(Kruskal重构树 rmq求LCA)

    题意 三倍经验哇咔咔 #137. 最小瓶颈路 加强版 #6021. 「from CommonAnts」寻找 LCR #136. 最小瓶颈路 Sol 首先可以证明,两点之间边权最大值最小的路径一定是在最 ...

  2. 最小瓶颈路 Uva 534 Frogger

    说明:关于Uva的题目,可以在vjudge上做的,不用到Uva(那个极其慢的)网站去做. 最小瓶颈路:找u到v的一条路径满足最大边权值尽量小 先求最小生成树,然后u到v的路径在树上是唯一的,答案就是这 ...

  3. UVALive 5713 Qin Shi Huang's National Road System秦始皇修路(MST,最小瓶颈路)

    题意: 秦始皇要在n个城市之间修路,而徐福声可以用法术位秦始皇免费修1条路,每个城市还有人口数,现要求徐福声所修之路的两城市的人口数之和A尽量大,而使n个城市互通需要修的路长B尽量短,从而使得A/B最 ...

  4. UVA 11354 Bond(最小瓶颈路+倍增)

    题意:问图上任意两点(u,v)之间的路径上,所经过的最大边权最小为多少? 求最小瓶颈路,既是求最小生成树.因为要处理多组询问,所以需要用倍增加速. 先处理出最小生成树,prim的时间复杂度为O(n*n ...

  5. 【UVA534】Frogger 最小瓶颈路

    题目大意:给定一张 N 个点的完全图,求 1,2 号节点之间的一条最小瓶颈路. 题解:可知,最小瓶颈路一定存在于最小生成树(最小瓶颈树)中.因此,直接跑克鲁斯卡尔算法,当 1,2 号节点在同一个联通块 ...

  6. 【20181102T2】飞越行星带【智商题+最小瓶颈路】

    题面 [正解] 一眼不可做啊 --相当于求路线上穿过的点最小距离最大 最小最大--二分啊 现在相当于给一个直径,要判断这个直径是否能从左边穿到右边 我们可以在距离不超过直径的点连一条边,\(y=0\) ...

  7. UVa 11354 邦德(最小瓶颈路+LCA)

    https://vjudge.net/problem/UVA-11354 题意: 有n个城市m条道路,每条道路有一个危险系数.先在有若干个询问,要求找到一条从s到t的路,使得途径所有边的最大危险系数最 ...

  8. 【UVA10816】Travel in Desert (最小瓶颈路+最短路)

    UVA10816 Travel in Desert 题目大意 沙漠中有一些道路,每个道路有一个温度和距离,要求s,t两点间的一条路径,满足温度最大值最小,并且长度最短 输入格式 输入包含多组数据. 每 ...

  9. HDU4081:Qin Shi Huang's National Road System (任意两点间的最小瓶颈路)

    Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/3 ...

随机推荐

  1. postman从body,headers,data中获取token后回写做全局变量

    设置全局变量

  2. python 操作ssh登录

    import paramiko #创建SSH对象 ssh = paramiko.SSHClient() #把要连接的机器添加到known_hosts文件中 ssh.set_missing_host_k ...

  3. ECharts-第一篇最简单的应用

    1.简单演示一个饼状图 准备好echarts-all.js 2.编写页面代码 <!DOCTYPE html> <html> <head> <meta char ...

  4. using 用法拾忆

    using 用法主要包括三种: 1.引用外部命名空间以及外部命名空间中定义的类型(指令) 2.创建命名空间别名,避免因名称相同造成的冲突(指令) 3.定义资源使用范围,在范围结束后释放资源对象(语句) ...

  5. 如何使用IDEA将项目上传到GitHub中

    上传之前先规定上传的格式: 1 . 以后所有上传的项目,都只上传 src文件集以及pom.xml文件,不要带有自己的 .idea配置文件或者target运行文件之类的(就算是测试文件也一样,从开始就养 ...

  6. APMServ升级PHP至5.3

    APMServ5.2.6 的php版本是php5.2.6,所以需要升级一下PHP版本:1.到 php下载地址下载PHP5.3的VC6版本的zip文件,我下载的是:php-5.3.23-Win32-VC ...

  7. [CQOI2009]dance跳舞(最大流+二分)

    [CQOI2009]dance跳舞 每个人拆成$2$个点,表示是否与喜欢的人跳舞 跳$m$首舞曲时,满足最大流为$n*m$ 二分$m$,跑最大流即可 #include<cstdio> #i ...

  8. JEECG 深度使用培训班 周六周日公开课(一期班)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/25411023 广大技术爱好者:     ...

  9. C#将MD5后的字符串转为字符数据,随机大小写

    一如下代码 public static string GenerateCode(Guid id, DateTime endTime, string Type) { string str = id + ...

  10. spark sql 操作

    DSL风格语法 1.查看DataFrame中的内容 scala> df1.show +---+--------+---+ | id| name|age| +---+--------+---+ | ...