https://www.acmicpc.net/problem/1717
๋ฌธ์
์ด๊ธฐ์ {0}, {1}, {2}, ... {n} ์ด ๊ฐ๊ฐ n+1๊ฐ์ ์งํฉ์ ์ด๋ฃจ๊ณ ์๋ค. ์ฌ๊ธฐ์ ํฉ์งํฉ ์ฐ์ฐ๊ณผ, ๋ ์์๊ฐ ๊ฐ์ ์งํฉ์ ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ ์ํํ๋ ค๊ณ ํ๋ค.
์งํฉ์ ํํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. m์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ์ฐ์ฐ์ ๊ฐ์์ด๋ค. ๋ค์ m๊ฐ์ ์ค์๋ ๊ฐ๊ฐ์ ์ฐ์ฐ์ด ์ฃผ์ด์ง๋ค. ํฉ์งํฉ์ 0 a b์ ํํ๋ก ์ ๋ ฅ์ด ์ฃผ์ด์ง๋ค. ์ด๋ a๊ฐ ํฌํจ๋์ด ์๋ ์งํฉ๊ณผ, b๊ฐ ํฌํจ๋์ด ์๋ ์งํฉ์ ํฉ์น๋ค๋ ์๋ฏธ์ด๋ค. ๋ ์์๊ฐ ๊ฐ์ ์งํฉ์ ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ 1 a b์ ํํ๋ก ์ ๋ ฅ์ด ์ฃผ์ด์ง๋ค. ์ด๋ a์ b๊ฐ ๊ฐ์ ์งํฉ์ ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ ์ฐ์ฐ์ด๋ค. a์ b๋ n ์ดํ์ ์์ฐ์ ๋๋ 0์ด๋ฉฐ ๊ฐ์ ์๋ ์๋ค.
์ถ๋ ฅ
1๋ก ์์ํ๋ ์ ๋ ฅ์ ๋ํด์ ํ ์ค์ ํ๋์ฉ YES/NO๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. (yes/no ๋ฅผ ์ถ๋ ฅํด๋ ๋๋ค)
์ํ์ฐฉ์ค
1. ๋ถ๋ฆฌ์งํฉ ๊ฐ๋ ์ ๊ฐ๋จํ ์ดํดํ๊ณ ์์ผ๋ฉฐ ๊ตฌํํ๋ค -> ์๊ฐ์ด๊ณผ
return root(par[i]);
//โฌ๏ธ
return par[i] = root(par[i]);
๋ชจ๋ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๊ฐ ๋ฃจํธ๋ ธ๋๊ฐ ๋ ์ ์๋๋ก ์ต์ ํํ๋ค.
์ฆ, ๋ฃจํธ๋ฅผ ์ฐพ์ผ๋ฌ ๊ฐ๋ ์ฌ๊ทํจ์์ ์ฐ์ฐ ๊ณผ์ ์์ ๋ฃจํธ๋ ธ๋๋ฅผ ๋ถ๋ชจ๋ก ์ก์ ์ ์๊ฒ ์ฝ๋๋ฅผ ๋ฐ๊ฟ
2. ๊ทผ๋ฐ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค
cin.tie(0);
cin.sync_with_stdio(false);
ios_base::sync_with_stdio(false);
์๊ณ ๋ฆฌ์ฆ ์บ ํ ์ฒซ์งธ๋ ๋ฃ๊ณ ๊ทธ๋์ ์๊ณ ์์๋ ์ด ์ฝ๋... ๋ฅผ ์ถ๊ฐํ๋ ๋์๋ค..
์ ์๋ฏธ๋ฅผ ์๊ณ ์ถ์ง๋ ์์ ์๊ณ ์์๋ ์ฝ๋์ ์์คํจ์ ๊นจ๋ฌ์๋ค
ํ์ด
๋ถ๋ฆฌ์งํฉ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ ํจ์๋ฅผ ๊ตฌํํ๋ ๊ฐ๋จํ ๋ฌธ์ ๋ผ์ ๊ด๋ จ ๊ฐ๋ ๋ง ๊ณต๋ถํ๊ณ ๋ ํ ์ ์์๋ค
๋ฌผ๋ก ๋๋ ์ธํฐ๋ท์ ํ์ ๋น๋ฆฌ๊ธด ํ์ง๋ง ์ด๊ฒ ์ ๊ณจ๋์ธ๊ฑด์ง.. ์๋ฌธ.....
#include <iostream>
using namespace std;
int par[1000001];
//๋ฃจํธ๋
ธ๋๋ฅผ ๋ฐํํด์ฃผ๋ ํจ์
int root(int i){
if(par[i] == i)
return i;
return par[i] = root(par[i]);
}
int main() {
cin.tie(0);
cin.sync_with_stdio(false);
ios_base::sync_with_stdio(false);
//์
๋ ฅ ๋ฐ ์ธํ
int n, m;
cin >> n >> m;
for(int i=0; i<=n; i++){
par[i] = i;
}
while(m--) {
int op, a, b;
cin >> op >> a >> b;
int A = root(a);
int B = root(b);
//ํฉ์งํฉ ์ฐ์ฐ
if(op == 0 && A != B){
par[A] = B;
}
//ํฌํจ์ฌ๋ถ ํ์ธ ์ฐ์ฐ
else if(op == 1){
if(A == B)
cout << "yes\n";
else
cout << "no\n";
}
}
return 0;
}
'๐ฆ Chango > ๐ฃ EDOC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ B2][C++] ๋ฐฑ์ค 9076๋ฒ : ์ ์ ์ง๊ณ (0) | 2022.03.23 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 14594๋ฒ : ๋๋ฐฉ ํ๋ก์ ํธ (Small) (0) | 2021.11.26 |
[BOJ][C++] ๋ฐฑ์ค 9237๋ฒ : ์ด์ฅ๋ ์ด๋ (0) | 2021.11.17 |
[Segfault][BOJ][C++] ๋ฐฑ์ค 1753๋ฒ : ์ต๋จ๊ฒฝ๋ก (0) | 2021.11.16 |
[BOJ][C++] ๋ฐฑ์ค 11256๋ฒ: ์ฌํ (0) | 2021.11.16 |