๋ฌธ์
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int N;
int parent[1000001];
int child_cnt[1000001];
int find_parent(int x){
if(x == parent[x]) return x;
else return parent[x] = find_parent(parent[x]);
}
void union_parent(int a, int b){
a = find_parent(a);
b = find_parent(b);
if(a<b){
parent[b] = a;
child_cnt[a] += child_cnt[b];
child_cnt[b] = 0;
}
else{
parent[a] = b;
child_cnt[b] += child_cnt[a];
child_cnt[a] = 0;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
for(int i=1; i<1000001; i++){
parent[i] = i;
child_cnt[i] = 1;
}
for(int i=0; i<N; i++){
char cmd; cin>>cmd;
if(cmd == 'I'){
int a, b; cin>>a>>b;
if(find_parent(a) != find_parent(b)) union_parent(a, b);
}
else if(cmd == 'Q'){
int a; cin>>a;
cout<< child_cnt[find_parent(a)]<<'\n';
}
}
}
ํ์ด
์ด๋ค ๋ ธ๋๊ฐ ๋ช ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋์ง ์ฐพ๋ ๋ฌธ์ ์ธ ์ ๋์จ ํ์ธ๋ ๋ฌธ์ ์์ต๋๋ค.
์์ ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฐ์ด์ ์์ฑํด๋๊ณ ์ ๋์จ ํ์ธ๋๋ฅผ ํตํด์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํฉ์น ๋, ํด๋น ์์ ๋ ธ๋๋ฅผ ๊ฐฑ์ ํ๋ ์์ด๋์ด๋ก ํ์ดํ์ต๋๋ค.
๋ง์ง๋ง ์ถ๋ ฅ ๋ถ๋ถ์์ cout<< child_cnt[find_parent(a)]<<'\n'; ๋ฅผ cout<< child_cnd[parent[a]]<<'\n';๋ผ๊ณ ์ฒ์์ ์์ฑํ๋๋ฐ ํ๋ ธ๋ค๊ณ ์ค๋ต์ด ๋ ์ ์์ง๊น์ง ์ ๊ทธ๋ฐ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.. ํน์๋ ์์๋ ๋ถ ๊ณ์๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 15681๋ฒ - ํธ๋ฆฌ์ ์ฟผ๋ฆฌ (0) | 2022.09.04 |
---|---|
[๋ฐฑ์ค,c++] 10775๋ฒ - ๊ณตํญ (0) | 2022.09.02 |
[๋ฐฑ์ค,c++] 4195๋ฒ - ์น๊ตฌ ๋คํธ์ํฌ (0) | 2022.09.02 |
[๋ฐฑ์ค,c++] 17144๋ฒ - ๋ฏธ์ธ๋จผ์ง ์๋ ! (0) | 2022.09.02 |
[๋ฐฑ์ค,c++] 1761๋ฒ - ์ ์ ๋ค์ ๊ฑฐ๋ฆฌ (0) | 2022.09.01 |
[๋ฐฑ์ค,c++] 11438๋ฒ - LCA 2 (0) | 2022.08.30 |
๋๊ธ