HyeLog
๋ฐฑ์ค_12886_๋๊ทธ๋ฃน ๋ณธ๋ฌธ
๐โ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/12886
12886๋ฒ: ๋ ๊ทธ๋ฃน
์ค๋ ๊ฐํธ๋ ๋์ ์ด์ฉํด ์ฌ๋ฏธ์๋ ๊ฒ์์ ํ๋ ค๊ณ ํ๋ค. ๋จผ์ , ๋์ ์ธ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ ๊ฐ๊ฐ์ ๊ทธ๋ฃน์๋ ๋์ด A, B, C๊ฐ๊ฐ ์๋ค. ๊ฐํธ๋ ๋ชจ๋ ๊ทธ๋ฃน์ ์๋ ๋์ ๊ฐ์๋ฅผ ๊ฐ๊ฒ ๋ง๋ค๋ ค
www.acmicpc.net
๐งฉ ์๊ณ ๋ฆฌ์ฆ
DFS / BFS ์๊ณ ๋ฆฌ์ฆ ๋๋ค ์ฌ์ฉ ๊ฐ๋ฅ (์ด๋ฒ์๋ DFS๋ก ํ์ด๋ดค๋ค.)
๐ก ์์ด๋์ด
์ ์ : (a,b,c) = ๋์ ๊ฐ์ ์ํ
๊ฐ์ : (a,b,c) → (a´,b´,c´) = ํ ๋จ๊ณ์์ ๋์ ์ด๋
์ ์ฒด ๋์ ๊ฐ์๋ ๋ณํ์ง ์๋๋ค๋ ์ ์ ์ด์ฉํด์ ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ์ค์ธ๋ค. (dfs ํจ์์ ๋งค๊ฐ๋ณ์๋ก 2๊ฐ์ ๋ ๊ทธ๋ฃน๋ง ํ์)
๐ฉ๐ป ์ฝ๋
#include <iostream>
using namespace std;
int sum;
bool visited[1501][1501];
void dfs(int a, int b) {
if (visited[a][b]) return;
visited[a][b] = true;
int arr[3] = { a,b,sum - a - b };
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (arr[i] < arr[j]) {
int changed[3] = { a,b,sum - a - b };
changed[i] += arr[i];
changed[j] -= arr[i];
dfs(changed[i], changed[j]);
}
}
}
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int a, b, c;
cin >> a >> b >> c;
sum = a + b + c;
if (sum % 3 != 0) {
cout << 0 << '\n';
return 0;
}
dfs(a, b);
if (visited[sum / 3][sum / 3]) {
cout << 1 << '\n';
}
else {
cout << 0 << '\n';
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค_10026_์ ๋ก์์ฝ (0) | 2022.07.02 |
---|---|
๋ฐฑ์ค_1963_์์ ๊ฒฝ๋ก (0) | 2022.07.02 |
๋ฐฑ์ค_14502_์ฐ๊ตฌ์ (0) | 2022.06.16 |
๋ฐฑ์ค_16948_๋ฐ์ค ๋์ดํธ (0) | 2022.06.16 |
๋ฐฑ์ค_16928_๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2022.06.16 |