比赛 9.6 评测结果 AAATTTTTTA
题目名称 平凡的测试数据 最终得分 40
用户昵称 dream 运行时间 11.785 s
代码语言 C++ 内存使用 3.99 MiB
提交时间 2024-09-06 20:11:07
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=300005;
int n,m,cnt;
int f[N],b[N],dis[N];
inline void read(int &x){
	char c;
	int sum=0,f=1;
	c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		sum=sum*10+c-'0';
		c=getchar();
	}
	x=sum*f;
}
void init(){
	for(int i=1;i<=n;i++){
		f[i]=i;
	}
}
int main(){
	freopen("td.in","r",stdin);
	freopen("td.out","w",stdout);
	read(n),read(m);
	for(int i=1;i<=n;i++){
		read(dis[i]);
	}
	init();
	for(int i=1;i<=m;i++){
		int c,x,y;
		read(c),read(x);
		if(c==1){
			read(y);
			f[x]=y;
		}
		else{
			ll res=0;
			int i=x;
			for(;i!=f[i];i=f[i]){
				res^=dis[i];
			}
			res^=dis[i];
			printf("%d",res);
			putchar('\n');
		}
	}
	return 0;
}