| 比赛 | 9.6 | 评测结果 | AAAAAAAAAA | 
    | 题目名称 | 平凡的测试数据 | 最终得分 | 100 | 
    | 用户昵称 | flyfree | 运行时间 | 1.735 s | 
    | 代码语言 | C++ | 内存使用 | 5.10 MiB | 
    | 提交时间 | 2024-09-06 20:08:52 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define MAXN 500010
#define ll long long
inline ll read(){
    ll x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9'){
        if(c=='-')f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        x=x*10+c-'0';
        c=getchar(); 
    }
    return x*f;
}
ll s[MAXN],f[MAXN],d[MAXN];
ll n,m;
ll find(ll x){
    if(f[x]==x)return x;
    else{
        ll re=find(f[x]);
        d[x]^=d[f[x]];
        return f[x]=re;
    }
}
int main(){
    freopen("td.in","r",stdin);
    freopen("td.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        s[i]=read();
        f[i]=i;
    }
    for(int i=1;i<=m;i++){
        ll a,b,c;
        a=read(),b=read();
        if(a==1){
            c=read();
            f[b]=c;
            d[b]=s[c];
        }else{
            find(b);
            cout<<(d[b]^s[b])<<endl;
        }
    }
}