题目链接:so easy


一道哈希+并查集。

因为数字比较多,我们不能开数组并查集,但是询问次数不多,所以询问涉及的数字不多,我们哈希即可。然后哈希可以利用C++的 unordered_map。


AC代码:

#pragma GCC optimize(2)
#include<bits/stdc++.h>
//#define int long long
using namespace std;
unordered_map<int,int> mp;
int n,q;
int find(int x){
	if(!mp[x])	return x;
	if(mp[x]==-1)	return -1;
	else return mp[x]=find(mp[x]);
}
signed main(){
	scanf("%d %d",&n,&q);	mp[n]=-1;
	while(q--){
		int z,x;	scanf("%d %d",&z,&x);
		if(z==1)	mp[x]=find(x+1);
		else	printf("%d\n",find(x));
	}
	return 0;
}