help!应该能拿更多分啊!!!
查看原帖
help!应该能拿更多分啊!!!
1048929
zza_luogu楼主2024/8/1 18:56

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;
}

有没有大佬讲一下其他部分分怎么拿?

2024/8/1 18:56
加载中...