#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=400005,M=800005;
int T;
int n,m,q,k,s;
struct Node {int u,v,l,a;}arr[M];
bool cmp(Node a,Node b) {return a.a>b.a;}
int fa[2*N],len[2*N],f[N][20],dis[2*N],vis[2*N];
vector<int> vec[2*N];
vector<pair<int,int> > dijvec[N];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > que;
void dij() {
memset(dis,127,sizeof(dis));
memset(vis,0,sizeof(vis));
que.push(make_pair(0,1));
dis[1]=0;
while(!que.empty()) {
auto top=que.top();
int u=top.second;
que.pop();
if(vis[u]) continue;
vis[u]=1;
int v,w;
for(auto v_w:dijvec[u]) {
v=v_w.first,w=v_w.second;
if(dis[u]+w<dis[v]) {
dis[v]=dis[u]+w;
que.push(make_pair(dis[v],v));
}
}
}
}
int find(int u) {
if(fa[u]==u) return u;
return fa[u]=find(fa[u]);
}
int p;
void add(Node node) {
int u=node.u,v=node.v,w=node.a;
int fu=find(u),fv=find(v);
if(fu==fv) return;
++p;
fa[fu]=fa[fv]=p;
vec[fu].push_back(p);
vec[fv].push_back(p);
vec[p].push_back(fu);
vec[p].push_back(fv);
len[p]=w;
}
void dfs(int u,int father) {
f[u][0]=father;
for(int i=1;i<=19;++i) f[u][i]=f[f[u][i-1]][i-1];
for(auto v:vec[u]) {
if(v==father) continue;
dfs(v,u);
dis[u]=min(dis[u],dis[v]);
}
// cout << u << ' ' << dis[u] << ' ' << len[u] << endl;
}
int get(int u,int h) {
for(int i=19;i>=0;--i) {
// cout << f[u][i] << ' ' << len[f[u][i]] << endl;
if(f[u][i]&&len[f[u][i]]>h) u=f[u][i];
}
return dis[u];
}
signed main() {
cin >> T;
while(T--) {
p=0;
cin >> n >> m;
int u,v,l,a;
for(int i=1;i<=n;++i) dijvec[i].clear();
for(int i=1;i<=m;++i) {
cin >> u >> v >> l >> a;
dijvec[u].push_back(make_pair(v,l));
dijvec[v].push_back(make_pair(u,l));
arr[i]={u,v,l,a};
}
sort(arr+1,arr+1+n,cmp);
memset(len,127,sizeof(len));
memset(f,0,sizeof(f));
p=n;
for(int i=1;i<=2*n;++i) fa[i]=i,vec[i].clear();
for(int i=1;i<=m;++i) add(arr[i]);
dij();
dfs(p,0);
cin >> q >> k >> s;
int start,height,lastans=0;
while(q--) {
cin >> start >> height;
start=(start+k*(lastans)-1)%n+1;
height=(height+k*lastans)%(s+1);
cout << (lastans=get(start,height)) << endl;
}
}
return 0;
}
是写的正解,求求看看哪里实现炸了,悬二关