分析

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

于是我们按边权从小到大建立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 ;
}

最新文章

  1. EBS 11i 的工作流列表
  2. LINUX下C-C++类软件的诊断
  3. [C#进阶系列]专题二:你知道Dictionary查找速度为什么快吗?
  4. Aspect Oriented Programming using Interceptors within Castle Windsor and ABP Framework AOP
  5. [ExtJS5学习笔记]第三节 sencha cmd学习笔记 生成应用程序构建的内部细节
  6. Xor Sum---hdu4825(01字典树模板)
  7. 开发报表时将已有User做成下拉列表,第一项为label为ALL,value为null
  8. LeetCode Find Minimum in Rotated Sorted Array II
  9. iOS - (TableView中利用系统的 cell 设置 cell.textlabel 位置和大小)
  10. angular入门系列教程2
  11. 异常:java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
  12. centOS 6.4 vsftpd 配置
  13. pycharm常用快捷键与设置
  14. call和apply区别
  15. Ubuntu配置OpenGL环境
  16. CentOS6.5 配置防火墙+允许指定ip访问端口
  17. display:table 水平居中
  18. c3p0使用记录
  19. 【第二组】Hunter-alpha版本发布报告
  20. 017、RUN、CMD、ENTRYPOINT (2019-01-08 周二)

热门文章

  1. C++ 全面刨析使用指针方法 _new _delete
  2. css:设置div边框透明+渐变
  3. linux中cut命令
  4. 表格类型数据,Excel csv导入,导出操作
  5. 在Eclipse-jee-neon中配置springsource-tool-suite
  6. 即时通讯(II)
  7. .NetCore模拟Postman的BasicAuth生成Authrization
  8. sass @import 规则
  9. HTML5 中list 和datalist实例
  10. 阿里云ECS无法通过SSL远程链接问题。