提交记录 16350


用户 题目 状态 得分 用时 内存 语言 代码长度
TOE noi18a. 【NOI2018】归程 Wrong Answer 60 1.206 s 142656 KB C++ 3.63 KB
提交时间 评测时间
2021-07-13 20:38:35 2021-07-13 20:38:53
#include<ctime>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define reg register
#define uni unsigned
using namespace std;
const uni N=400010,ISIZE=1<<26,OSIZE=1<<23,W=4,WT=4;
uni n,m,cnt,p[N],s[N],map[N],d[N<<2],w[N],up[N][23],mi[N],mx[N];
uni st[N],OnF;
uni seed=time(0);
struct edge{
    uni u,v,x,y;
}e[N];
struct CFS{
    uni a[N],last,b[N+N][3];
    void add(uni x,uni y,uni z){
        b[++last][0]=a[x];
        b[a[x]=last][1]=y;
        b[last][2]=z;
    }
}a,b;
char BuF[ISIZE],*InF=BuF,WuF[OSIZE];
uni read(){
    reg uni x=0;
    for(;47>*InF||*InF>58;++InF);
    for(;47<*InF&&*InF<58;x=x*10+(*InF++^48));
    return(x);
}
void write(uni x){
    if(!x){
        WuF[OnF++]=48;
    }
    for(;x;x/=10){
        st[++st[0]]=x%10+48;
    }
    for(;st[0];WuF[OnF++]=st[st[0]--]);
    WuF[OnF++]='\n';
}
bool cmp(edge a,edge b){
    return(a.y>b.y);
}
uni root(uni x){
    return(s[x]?s[x]=root(s[x]):x);
}
void kruskal(){
    sort(e,e+m,cmp);
    for(reg uni i=0,x,y;i<m;++i){
        if((x=root(e[i].u))!=(y=root(e[i].v))){
            p[s[x]=s[y]=++cnt]=e[i].y;
            b.add(cnt,x,0);
            b.add(cnt,y,0);
        }
    }
}
uni rnd(uni l,uni r){
    seed^=seed<<17;seed^=seed>>15;seed^=seed<<3;
    return(seed%(r-l+1)+l);
}
void change(reg uni &x,reg uni &y){
    swap(map[x],map[y]);
    swap(x,y);
}
void spfa(){
    memset(w,127,sizeof(w));
    w[d[0]=1]=0;
    for(reg uni h=0,t=0;h<=t;++h){
        reg uni *hd=d+h;
        if(h+W+W+3<t){
            for(reg uni i=0,l=h+W+2,r=t-W-1;i<=WT;++i){
                reg uni x=rnd(l,r);
                if(w[*hd]>w[d[x]]){
                    change(*hd,d[x]);
                }
            }
        }
        for(reg uni *i=d+h+1,*j=d+t,*r=d+h+W;i<r&&i<j;++i,--j){
            if(w[*hd]>w[*i]){
                change(*hd,*i);
            }
            if(w[*hd]>w[*j]){
                change(*hd,*j);
            }
        }
        for(reg uni tmp=*hd,i=a.a[tmp];i;i=a.b[i][0]){
            reg uni nxt=a.b[i][1],p=w[tmp]+a.b[i][2];
            if(w[nxt]>p){
                w[nxt]=p;
                if(map[nxt]){
                    if(w[nxt]<w[d[t]]){
                        change(d[map[nxt]],d[t]);
                    }
                }else{
                    d[map[nxt]=++t]=nxt;
                    if(t>h+1&&w[d[t-1]]<w[d[t]]){
                        change(d[t],d[t-1]);
                    }
                }
            }
        }
        map[*hd]=0;
    }
}
void dfs(uni x){
    for(reg uni &i=mx[x]=1;up[x][i-1];++i){
        up[x][i]=up[up[x][i-1]][i-1];
    }
    mi[x]=x>n?0x7fffffff:w[x];
    for(reg uni i=b.a[x];i;i=b.b[i][0]){
        up[b.b[i][1]][0]=x;
        dfs(b.b[i][1]);
        mi[x]=min(mi[x],mi[b.b[i][1]]);
    }
}
int main(){
    fread(BuF,1,ISIZE,stdin);
    for(uni T=read(),lastans=0;T;--T){
        n=read();m=read();
        cnt=n;
        lastans=a.last=b.last=0;
        memset(s,0,sizeof(s));
        memset(a.a,0,sizeof(a.a));
        memset(b.a,0,sizeof(b.a));
        for(reg uni i=0;i<m;++i){
            e[i].u=read();e[i].v=read();e[i].x=read();e[i].y=read();
            a.add(e[i].u,e[i].v,e[i].x);
            a.add(e[i].v,e[i].u,e[i].x);
        }
        kruskal();
        spfa();
        dfs(cnt);
        for(reg uni Q=read(),K=read(),S=read();Q;--Q){
            reg uni vi=read(),pi=read();
            if(K){
                vi=(vi+lastans-1)%n+1;
                pi=(pi+lastans)%(S+1);
            }
            for(reg uni i=mx[vi]-1;~i;--i){
                if(up[vi][i]&&p[up[vi][i]]>pi){
                    vi=up[vi][i];
                }
            }
            write(lastans=mi[vi]);
        }
    }
    fwrite(WuF,1,OnF,stdout);
    return(0);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1851.46 us6 MB + 152 KBAcceptedScore: 5

Testcase #2862.85 us6 MB + 164 KBAcceptedScore: 5

Testcase #3907.77 us6 MB + 180 KBAcceptedScore: 5

Testcase #4957.66 us6 MB + 204 KBAcceptedScore: 5

Testcase #52.642 ms6 MB + 900 KBAcceptedScore: 5

Testcase #6782.933 ms101 MB + 72 KBWrong AnswerScore: 0

Testcase #72.095 ms6 MB + 848 KBAcceptedScore: 5

Testcase #82.097 ms6 MB + 856 KBAcceptedScore: 5

Testcase #92.095 ms6 MB + 852 KBAcceptedScore: 5

Testcase #10372.558 ms85 MBAcceptedScore: 5

Testcase #11375.666 ms85 MB + 200 KBAcceptedScore: 5

Testcase #12875.071 ms114 MB + 596 KBWrong AnswerScore: 0

Testcase #13870.112 ms114 MB + 688 KBWrong AnswerScore: 0

Testcase #14879.712 ms114 MB + 684 KBWrong AnswerScore: 0

Testcase #153.15 ms7 MB + 4 KBAcceptedScore: 5

Testcase #163.202 ms7 MB + 12 KBAcceptedScore: 5

Testcase #17866.648 ms115 MB + 32 KBWrong AnswerScore: 0

Testcase #18870.726 ms114 MB + 944 KBWrong AnswerScore: 0

Testcase #191.205 s139 MB + 320 KBWrong AnswerScore: 0

Testcase #201.206 s139 MB + 292 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-19 08:40:02 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠