首先肯定要预处理出每一个点到1的最短路(别写spfa)
然后以海拔为边权,建一棵kruskal重构树
用倍增找到vi最后一个小于pi的祖先,然后在子树中取min(预处理)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 400005
4 struct ji1{
5 int x,y,z;
6 bool operator < (const ji1 &k)const{
7 return z>k.z;
8 }
9 }e[N];
10 struct ji2{
11 int nex,to,len;
12 }edge[N<<1];
13 struct ji3{
14 int k,d;
15 bool operator < (const ji3 &x)const{
16 return d>x.d;
17 }
18 };
19 priority_queue<ji3>q;
20 int T,E,n,m,x,y,z,w,ans,head[N],d[N],vis[N],v[N],ls[N],rs[N],f[N][21];
21 int find(int k){
22 if (k==f[k][0])return k;
23 return f[k][0]=find(f[k][0]);
24 }
25 void add(int x,int y,int z){
26 edge[E].nex=head[x];
27 edge[E].to=y;
28 edge[E].len=z;
29 head[x]=E++;
30 }
31 void dij(){
32 for(int i=2;i<=n;i++)d[i]=2e9;
33 memset(vis,0,sizeof(vis));
34 q.push(ji3{1,0});
35 while (!q.empty()){
36 int k=q.top().k;
37 q.pop();
38 if (vis[k])continue;
39 vis[k]=1;
40 for(int i=head[k];i!=-1;i=edge[i].nex){
41 int v=edge[i].to;
42 if (d[v]>d[k]+edge[i].len)q.push(ji3{v,d[v]=d[k]+edge[i].len});
43 }
44 }
45 }
46 void dfs(int k){
47 for(int i=1;i<=20;i++)f[k][i]=f[f[k][i-1]][i-1];
48 if (k<=n)return;
49 f[ls[k]][0]=f[rs[k]][0]=k;
50 dfs(ls[k]);
51 dfs(rs[k]);
52 }
53 int query(int k,int w){
54 for(int i=20;i>=0;i--)
55 if (w<v[f[k][i]])k=f[k][i];
56 return d[k];
57 }
58 int main(){
59 scanf("%d",&T);
60 while (T--){
61 scanf("%d%d",&n,&m);
62 memset(head,-1,sizeof(head));
63 E=ans=0;
64 for(int i=1;i<=m;i++){
65 scanf("%d%d%d%d",&x,&y,&z,&w);
66 add(x,y,z);
67 add(y,x,z);
68 e[i]=ji1{x,y,w};
69 }
70 dij();
71 for(int i=1;i<2*n;i++)f[i][0]=i;
72 sort(e+1,e+m+1);
73 for(int i=1;i<=m;i++){
74 x=find(e[i].x);
75 y=find(e[i].y);
76 if (x==y)continue;
77 v[++n]=e[i].z;
78 d[n]=min(d[x],d[y]);
79 ls[n]=x;
80 rs[n]=y;
81 f[x][0]=f[y][0]=n;
82 }
83 n=n/2+1;
84 dfs(2*n-1);
85 scanf("%d%d%d",&m,&z,&w);
86 for(int i=1;i<=m;i++){
87 scanf("%d%d",&x,&y);
88 printf("%d\n",ans=query((x+z*ans-1)%n+1,(y+z*ans)%(w+1)));
89 }
90 }
91 }

最新文章

  1. 查看npm全局安装的模块
  2. spring3.0使用annotation完全代替XML
  3. dp入门--poj 1163数塔
  4. Asp.Net Core 项目搭建 基础配置 和MySql 的使用
  5. 在ubuntu 12.04 x64下编译hadoop2.4
  6. 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
  7. 2015年毕业生收到的offer和薪资透露
  8. NOJ 1063 生活的烦恼
  9. Android L Camera2 API 使用实例程序汇总
  10. 第四篇 在中国做ERP系统实施你必须知道的一些常识
  11. nyoj 44 子串和
  12. HTML5事件——contextmenu 隐藏鼠标右键菜单
  13. js中innerHTML、outerHTML与innerText的用法与区别
  14. C语言函数-strcat
  15. canvas图片与img图片的相互转换
  16. mysql 插件相关命令
  17. 【iCore4 双核心板_ARM】例程二十九:SD_IAP_FPGA实验——更新升级FPGA
  18. springMVC的高级数据绑定,以及json交互,全局异常配置,
  19. 51Node 1051---最大子矩阵和
  20. PHP - CentOS下开发运行环境搭建(Apache+PHP+MySQL+FTP)

热门文章

  1. ansible远程运维操作
  2. The Data Way Vol.3|做到最后只能删库跑路?DBA 能做的还有很多
  3. 【原创】C语言和C++常见误区(一)
  4. 解决pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=&#39;files.pythonhosted.org&#39;, port=443): Read timed out.
  5. 036—环境变量path
  6. SharkCTF2021 The_nature_of_the_human
  7. vue3.x全局$toast、$message、$loading等js插件
  8. mysql分表之后怎么平滑上线?
  9. Python大数据应用
  10. cm1 逆向分析