(如果把注释解开,甚至会直接崩溃)
#include <iostream>
#include <malloc.h>
using namespace std;
int Node_cnt=0;
struct Node{
int empty;
};
Node** pCreate();
int main(){
int N,M,Z,X,Y;
cin>>N>>M;
const int __N=N;
Node** arr[__N+1];
Node* my_p=NULL;
for(int i=0;i<=__N;i++){
arr[i]=NULL;
}
for(int i=0;i<M;i++){
cin>>Z>>X>>Y;
if(Z==1){
if(arr[X]==NULL&&arr[Y]==NULL){
arr[X]=pCreate();
arr[Y]=arr[X];
cout<<(*arr[Y])->empty<<endl;
}else if(arr[X]==NULL){
arr[X]=arr[Y];
}else if(arr[Y]==NULL){
arr[Y]=arr[X];
}else {
/*
my_p=*arr[X];
if(my_p==NULL) cout<<"err"<<endl;
else cout<<my_p->empty<<endl;
free(*arr[Y])
*/
*arr[Y]=*arr[X];
}
}else if(Z==2){
if(arr[X]==NULL&&arr[Y]==NULL){
cout<<'N'<<endl;
}else if(arr[X]==NULL){
cout<<'N'<<endl;
}else if(arr[Y]==NULL){
cout<<'N'<<endl;
}else {
if(*arr[X]==*arr[Y]){
cout<<'Y'<<endl;
}else cout<<'N'<<endl;
}
}
}
}
Node** pCreate(){
Node* p=(Node*)malloc(sizeof(Node));
p->empty=Node_cnt++;
Node** pp=&p;
return pp;
}