/ Vijos / 讨论 / 洛谷 /

为什么同样的代码不同的结果。

已重复试验,确认了这个~~bug(?)~~结果。

https://www.luogu.com.cn/record/33852146

https://www.luogu.com.cn/record/33852441

https://www.luogu.com.cn/record/33852436

https://www.luogu.com.cn/record/33852316

https://www.luogu.com.cn/record/33852312

https://www.luogu.com.cn/record/33852306

https://www.luogu.com.cn/record/33852280

https://www.luogu.com.cn/record/33852260

?为什么一下子#1WA一下子#2wa。

#include<iostream>
#include<cstdio>
using namespace std;
long long a[1000005];
long long f[105][100005];
struct xyq{
    int v,next;
}_[1000005];
int head[1000005],tot=1;
void add(int u,int v){
    _[tot].v=v;
    _[tot].next=head[u];
    head[u]=tot;
    tot++;
}
int main(){
    int n,m,q,i,j,k,A,B;
    long long ykb,sum=0;
    cin>>n>>m>>q;
    for(i=1;i<=n;i++){
        cin>>a[i];
        f[i][0]=a[i];
    }
    for(i=0;i<m;i++){
        cin>>A>>B;
        add(A,B);
        add(B,A);
    }
    if(m==(n*(n-1)>>1)){
        for(i=2;i<=n;i++){
            sum=sum^a[i];
        }
        if(n&1){
            for(i=1;i<=q;i++){
                cin>>ykb;
                cout<<(ykb?sum:a[0])<<endl;
            }
        }else{
            for(i=1;i<=q;i++){
                cin>>ykb;
//              cout<<ykb<<":";
                if(ykb&1){
                    cout<<sum<<endl;
                }else{
                    cout<<a[1]<<endl;
                }
            }
        }
        return 0;
    }
//  for(i=1;i<=n;i++){
//      cout<<i<<"|";
//      for(j=head[i];j;j=_[j].next){
//          cout<<_[j].v<<" ";
//      }
//      cout<<endl;
//  }
    for(i=1;i<=10000;i++){
//      cout<<"----------------------------------------i="<<i<<"---------------------------------"<<endl;
        for(j=1;j<=n;j++){
//          cout<<"j="<<j<<endl;
            sum=0;
            for(k=head[j];k;k=_[k].next){
                sum=sum^f[_[k].v][i-1];
//              cout<<"v="<<_[k].v<<",sum="<<sum<<endl;
            }
            f[j][i]=sum;
//          cout<<f[j][i]<<" ";
        }
//      cout<<endl;
    }
    for(i=1;i<=q;i++){
        cin>>ykb;
        if(ykb>10000){
            cout<<0<<endl;
        }else{
            cout<<f[1][ykb]<<endl;
        }
    }
    return 0;
}

3 条评论

  • @ 2020-05-27 18:14:36

    在你谷上发帖不是更好吗?

  • @ 2020-05-24 21:59:36

    %%%ak大神

  • @ 2020-05-24 15:52:09

    别tm的在vijos上宣传洛谷的团队,比赛,问关于洛谷的问题

    别当这里是 洛谷 分站

    • @ 2020-05-24 16:07:53

      怎么不可以啊...我只是发求助帖。vijos上没题目,我就交到了洛谷。

    • @ 2020-05-25 07:59:32

      怎么不可以啊...他只是发求助帖。vijos上没题目,他就交到了洛谷。

    • @ 2020-05-27 18:16:28

      别tm的在vijos上宣传洛谷的团队,比赛

      童鞋,您该配副眼镜了,别盯着电脑屏幕看太久啊……

    • @ 2020-06-13 18:37:05

      怎么不可以啊...他只是发求助帖。vijos上没题目,他就交到了洛谷。

  • 1