Problem
Problem URL : 집합의 표현
Code
#include<iostream>
using namespace std;
int p[1000005];
int Find(int x ){
if ( x == p[x])
return x;
else{
/*
int y = Find(p[x]);
p[x] = y;
return y;
*/
return p[x] = Find(p[x]);
}
return x;
}
void Union(int x, int y){
x = Find(x);
y = Find(y);
p[y] = x;
}
int main(){
for(int i=1; i<=1000005; i++)
p[i] = i;
int n,m;
cin >> n >> m;
int flag, a, b;
while (m--) {
scanf("%d%d%d",&flag, &a, &b);
if( flag ){
// Find
if( Find(a) == Find(b))
printf("YES\n");
else
printf("NO\n");
}
else{
// Union
Union(a, b);
}
}
return 0;
}
Feed Back
- 가벼운 Union & Find 문제 !