From ca6eb4c3abc26984abdeb94e1b92d4426eeb03fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EB=AC=B8=ED=98=95?= <74577714+alirz-pixel@users.noreply.github.com> Date: Thu, 22 Jan 2026 23:59:41 +0900 Subject: [PATCH] =?UTF-8?q?260122=20:=20[BOJ=202251]=20=EB=AC=BC=ED=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _munhyeong/2251.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 _munhyeong/2251.cpp diff --git a/_munhyeong/2251.cpp b/_munhyeong/2251.cpp new file mode 100644 index 00000000..197ec88d --- /dev/null +++ b/_munhyeong/2251.cpp @@ -0,0 +1,74 @@ +#include +#include +#include + +using namespace std; + +struct Node { + int a; + int b; + int c; + + bool operator<(const Node& other) const { + if (a != other.a) return a < other.a; + if (b != other.b) return b < other.b; + return c < other.c; + } +}; + +void insert_queue(queue& q, set &visited, int a, int b, int c) { + if (visited.insert({ a, b, c }).second) { + q.push({ a, b, c }); + } +} + +int main() { + int a, b, c; + cin >> a >> b >> c; + + set visited; + queue q; + + q.push({ 0, 0, c }); + visited.insert(q.front()); + + set answer; + while (!q.empty()) { + Node front = q.front(); + q.pop(); + + if (!front.a) + answer.insert(front.c); + // cout << front.a << " " << front.b << " " << front.c << "\n"; + + int move; + // a -> b + move = min(front.a, (b - front.b)); + insert_queue(q, visited, front.a - move, front.b + move, front.c); + + // a -> c + move = min(front.a, (c - front.c)); + insert_queue(q, visited, front.a - move, front.b, front.c + move); + + // b -> a + move = min(front.b, (a - front.a)); + insert_queue(q, visited, front.a + move, front.b - move, front.c); + + // b -> c + move = min(front.b, (c - front.c)); + insert_queue(q, visited, front.a, front.b - move, front.c + move); + + // c -> a + move = min(front.c, (a - front.a)); + insert_queue(q, visited, front.a + move, front.b, front.c - move); + + // c -> b + move = min(front.c, (b - front.b)); + insert_queue(q, visited, front.a, front.b + move, front.c - move); + } + + for (auto e : answer) + cout << e << " "; + + return 0; +}