1 条题解

  • 3
    @ 2023-7-16 14:45:43

    这道并查集好像没有题解啊 那么废话不多说直接上题解

    #include <bits/stdc++.h>
    using namespace std;
    int a[200005];
    int find(int x)
    {
    	if(a[x]==x) return x;//如果自己就是祖先返回自己
    	return a[x]=find(a[x]);//否则继续找自己的祖先,这里直接把这个节点连到祖先
    }
    int main()
    {
    	int n, m, p, x, y;
    	cin>>n>>m;
    	for(int i=1; i<=n; i++)
    		a[i]=i;//赋值自己就是自己的祖先
    	for(int i=0; i<m; i++)
    	{
    		cin>>p>>x>>y;
    		if(p==1)
    			a[find(x)]=a[find(y)];//连接祖先
    		else
    		{
    			if(a[find(x)]==a[find(y)]) cout<<"Y";
    			else cout<<"N";
    			cout<<endl;
    		}//一个简单的判断
    	}
    	return 0;
    }
    

    本人不才如有问题不要勿喷

    信息

    ID
    382
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    152
    已通过
    87
    上传者