什么是路径压缩,再简单点,就是谁能帮我看看这个代码为什么超时了


#include<bits/stdc++.h>
using namespace std;
 
int n;
int m;
int fa[10001];

int find(int x)
{
    if(fa[x]==x) return x;
    return find(fa[x]);
}

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) fa[i]=i; 
    for(int i=1;i<=m;i++)
    {
        int z;
        int x;
        int y;
        cin>>z>>x>>y;
        if(z==1)
        {
            fa[find(x)]=find(y);
        }
        else
        {
            if(find(x)==find(y)) cout<<"Y"<<endl;
            else cout<<"N"<<endl;
        }
    }
    return 0;
}

对应洛谷的P3667,并查集