From c007b218f71dd57883f2a8a322d17e886a2d95e5 Mon Sep 17 00:00:00 2001 From: dhlee777 Date: Tue, 12 Mar 2024 04:20:25 +0900 Subject: [PATCH] =?UTF-8?q?2024-03-12=20=EC=88=A8=EB=B0=94=EA=BC=AD?= =?UTF-8?q?=EC=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\353\260\224\352\274\255\354\247\210.cpp" | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 "dhlee777/bfs/\354\210\250\353\260\224\352\274\255\354\247\210.cpp" diff --git "a/dhlee777/bfs/\354\210\250\353\260\224\352\274\255\354\247\210.cpp" "b/dhlee777/bfs/\354\210\250\353\260\224\352\274\255\354\247\210.cpp" new file mode 100644 index 0000000..6f5d280 --- /dev/null +++ "b/dhlee777/bfs/\354\210\250\353\260\224\352\274\255\354\247\210.cpp" @@ -0,0 +1,37 @@ +#include +#include +using namespace std; +int dt[100001]; // ½Ã°£(¸îÃÊ)¸¦ ÀúÀåÇÏ´Â ¹è¿­,À妽º´Â ¼öºóÀÌ°¡ ÀÖ´Â À§Ä¡ÀÌ´Ù. +int k[3] = { -1,1}; //-1,1ÀÇ À§Ä¡À̵¿À» ´õÇØÁÖ±âÀ§ÇÑ ¹è¿­ +queueq; + +void bfs(int start, int end) { + q.push(start); // Å¥¿¡ Á¦ÀÏ Ã³À½ ¼öºóÀÌÀÇ ½ÃÀÛÀ§Ä¡¸¦ ³Ö´Â´Ù. + while (!q.empty()) { + int c = q.front(); //Å¥¿¡¼­ À§Ä¡¸¦ ²¨³½´Ù. + q.pop(); + if (c == end) { //Å¥¿¡¼­ ²¨³½ À§Ä¡°¡ µ¿»ýÀÇ À§Ä¡ÀÏ°æ¿ì + cout << dt[end]; //µ¿»ýÀ» ãÀº À§Ä¡¿¡¼­ÀÇ Ãּҽð£À» Ãâ·Â + return; + } + for (int i = 0; i < 2; i++) { //c°¡ °¥¼öÀÖ´Â À§Ä¡¸¦ »ìÆ캻´Ù(-1,+1) + int d = c + k[i]; // -1,+1 ÀÇ À§Ä¡À̵¿À» ÇØÁØ°ªÀ» d¿¡³Ö´Â´Ù. + if (d >= 0 && !dt[d] && d <= 100000) { // ¹æ¹®ÇÏÁö ¾ÊÀº À§Ä¡À̸é Ž»öÀ» ÁøÇàÇÑ´Ù. + dt[d] = dt[c] + 1; //Á¶°ÇÀ» ¸¸Á·ÇÏ¸é ¹æ±ÝŽ»öÇÑÀ§Ä¡ÀÇ ½Ã°£À» ±×Àü À§Ä¡Àǽð£ +1À» ÇØÁØ´Ù. + q.push(d); //bfs¸¦À§ÇØ Å¥¿¡ ¹æ±Ý Ž»öÇÑÀ§Ä¡¸¦ ³Ö´Â´Ù. + } + } + if (c * 2 <= 100000 && !dt[c * 2]) { //*2¸¦ ÅëÇÑ Å½»öÀÇ °æ¿ì + dt[c * 2] = dt[c] + 1; //-1,1ÀÇ°æ¿ì¿Í µ¿ÀÏ + q.push(c * 2); + } + } +} +int main(void) { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + int start,end; + cin >> start >> end; //¼öºóÀÌÀÇ ÇöÀçÀ§Ä¡¿Í,µ¿»ýÀÇ ÇöÀçÀ§Ä¡¸¦ ÀԷ¹޴´Ù. + bfs(start, end); + return 0; +} \ No newline at end of file