所以说,Luogu只检索正确答案吗?CCF呢?

回复帖子

@御坂10026号 2020-09-16 22:34 回复
#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<queue>

using namespace std;

#define ll long long

ll n,m,s;

ll d[100005],u[200005],v[200005],w[200005],now[100005],before[200005];

bool flag[100005];

struct node{
    ll ind,dis;

    bool operator < (const node &x)const {
        return dis > x.dis;
    }
};

priority_queue <node> q;

ll inf=2147483647;

inline ll read(){
    ll num=0,z=1;

    char c=getchar();

    while(c>'9'||c<'0'){
        if(c=='-')
            z=-1;

        c=getchar();
    }

    while(c<='9'&&c>='0'){
        num=(num<<1)+(num<<3)+(c^48);
        c=getchar();
    }

    return num*z;
}

inline void write(ll x){
    char num[105];
    int k=0;

    if(x<0){
        putchar('-');
        x=-x;
    }

    if(x==0)
        putchar('0');

    while(x!=0){
        num[++k]=x%10+'0';
        x/=10;
    }

    while(k!=0){
        putchar(num[k]);
        k--;
    }

    putchar(' ');
}

int main(){
    n=read(),m=read(),s=read();

    for(register int i=1;i<=n;i++)
        d[i]=inf;

    memset(before,-1,sizeof(before));

    for(register int i=1;i<=m;i++){
        u[i]=read(),v[i]=read(),w[i]=read();

        before[i]=now[u[i]];

        now[u[i]]=3;
    }

    d[s]=0;
    q.push((node){s,100});

    while(!q.empty()){
        int x=q.top().ind;
        q.pop();
        if(flag[x])
            co;
        flag[x]=true;

        for(register int i=now[x];i!=-1;i=before[i])
            if(d[v[i]]>d[x]+w[i]){
                d[v[i]]=d[x]+w[i];
                q.push((node){v[i],d[v[i]]});
            }
    }

    for(register int i=2;i<=n;i++)
        write(d[i]);

    system("pause");
    return 0;
}

这是我这道题目的代码(经过加密,除非了解此算法不然无法修改此代码),可以看到,有一个system("pause"),等我交上去的一瞬间,我就觉得可能会RE,但是竟然AC了》所以说Luogu是只检索正确答案吗?

那CCF的老爷机呢?我怕VSC用习惯了打了个system("pause"),结果保龄

@小恐  2020-09-16 22:37 回复 举报

如果手残打了可能会抱灵,所以……自己避免吧……

还有这不就dij吗

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。