5pts代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
int n,m;
int bian_u,bian_v,bian_l,bian_a;
struct bian{
int v,l,a;
};
vector<bian>dl[200005];
int q,k,s;
int v0,p0,la;
int today_v,today_p;
int f1[200005],f2[200005];
void kc(int x){
if(f1[x]==1)return;
f1[x]=1;
for(auto i:dl[x])if(i.a>today_p)kc(i.v);
return;
}
void bx(int x,int p){
if(f1[x]==1){
la=min(la,p);
return;
}
if(f2[x]==1)return;
f2[x]=1;
for(auto i:dl[x])bx(i.v,p+i.l);
return;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>bian_u>>bian_v>>bian_l>>bian_a;
dl[bian_u].push_back({bian_v,bian_l,bian_a});
dl[bian_v].push_back({bian_u,bian_l,bian_a});
}
cin>>q>>k>>s;
for(int qi=1;qi<=q;qi++){
new long long;
memset(f1,0,sizeof(f1));
memset(f2,0,sizeof(f2));
cin>>v0>>p0;
today_v=(v0+k*la-1)%n+1;
today_p=(p0+k*la)%(s+1);
kc(today_v);
la=1e9;
bx(1,0);
cout<<la<<"\n";
}
}
return 0;
}
有没有大佬讲一下其他部分分怎么拿?