记录编号 593746 评测结果 AAAAAAAAAA
题目名称 平凡的测试数据 最终得分 100
用户昵称 Gravatar何沛儒 是否通过 通过
代码语言 C++ 运行时间 0.638 s
提交时间 2024-09-10 21:10:33 内存使用 4.48 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,c[1000005],d[1000005],opt,a,b,fa[1000005];
int find(int x){
    if(fa[x] == x) return x;
    else if(fa[fa[x]] == fa[x]) return fa[x];
    else{
        int cnt = fa[x];
        fa[x] = find(fa[x]);
        d[x] = d[x]^d[cnt]^c[cnt];
        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",&c[i]);
        fa[i] = i;
        d[i] = c[i];
    }
    
    while(m--){
        scanf("%d",&opt);
        if(opt == 1){
     
            scanf("%d%d",&a,&b);
            int fb = find(b);
            fa[a] = fb;
            d[a]^=d[b];
        }else{
            scanf("%d",&a);
            find(a);
            printf("%d\n",d[a]);
            
        }
    }
    return 0;
}