70分求助
查看原帖
70分求助
342868
qfpjm楼主2021/3/7 22:15
#include<bits/stdc++.h>

using namespace std;

const int len = 1000001;
int parent[len] = {0};
int n, m; 

void union_(int v1, int v2){
	int p1 = parent[v1];
	int p2 = parent[v2];
	if (p1 != p2)
	{
		for (int i = 0;i < len;i ++)
		{
			if (parent[i] == p1)
			{
				parent[i] = p2;
			}
		}
	}
}

int find(int v1)
{
	return parent[v1];
}

bool isSame(int v1, int v2)
{
	return find(v1) == find(v2);
}

int main()
{
    // 初始化, 所有的元素分别属于不同的集合
    for (int i = 0; i < len; i++){
        parent[i] = i;
    }
    cin >> n >> m;
    for (int i = 1;i <= m;i ++)
    {
    	int z, x, y;
		scanf("%d%d%d", &z, &x, &y);
		if (z == 1)
		{
			union_(x, y);
		} 
		else
		{
			if (isSame(x, y))
			{
				printf("Y\n");
			}
			else
			{
				printf("N\n");
			}
		}
	}
    return 0;
}
2021/3/7 22:15
加载中...