比赛 9.6 评测结果 AAAAAAAAAA
题目名称 平凡的测试数据 最终得分 100
用户昵称 徐诗畅 运行时间 0.690 s
代码语言 C++ 内存使用 4.45 MiB
提交时间 2024-09-06 19:56:29
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=300005;
int n,m,a[N],num[N],fa[N];
int find(int x){
    int fx=(fa[x]==x?x:find(fa[x]));
    num[x]^=num[fa[x]];
    fa[x]=fx;
    return fa[x];
}
int main(){
    freopen("td.in","r",stdin);
    freopen("td.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i = 1;i<=n;i++){
        scanf("%d",&a[i]); num[i]=a[i];
        fa[i]=i;
    }
    while(m--){
        int op,x,y; scanf("%d",&op);
        if(op==1){
            scanf("%d%d",&x,&y);
            fa[x]=y;
            num[x]=a[x];
        } 
        else{
            scanf("%d",&x);
            int fx=find(x); 
            printf("%d\n",num[x]^a[fx]);
        }
    }
    return 0;
}