#include <stdio.h> #include <iostream> #include <set> #include <map> #include <queue> #include <vector> #include <string> #include <algorithm> using namespace std; int A, B; int T; void BFS() { queue<pair<int, string>> q; int visited[10010] = {0}; visited[A] = 1; q.push({A, ""}); while(!q.empty()) { int now = q.front().first; string com = q.front().second; q.pop(); if(now == B) { cout << com << "\n"; return; } for(int i = 1; i <= 4; i++) { // D if(i == 1) { int num = now * 2; if(num > 9999) { num %= 10000; } if(visited[num] == 0) { visited[num] = 1; q.push({num, com+"D"}); } } // S else if(i == 2) { int num = now; if(num == 0) { num = 9999; } else { num -= 1; } if(visited[num] == 0) { visited[num] = 1; q.push({num, com+"S"}); } } // L else if(i == 3) { int num = now; int a = num % 1000; int b = num / 1000; num = a*10 + b; if(visited[num] == 0) { visited[num] = 1; q.push({num, com+"L"}); } } // R else if(i == 4) { int num = now; int a = num / 10; int b = num % 10; num = a + b*1000; if(visited[num] == 0) { visited[num] = 1; q.push({num, com+"R"}); } } } } } int main(void) { // freopen("B9019_input.txt", "r", stdin); ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> T; for(int n = 1; n <= T; n++) { cin >> A >> B; BFS(); } return 0; } | cs |
'Baekjoon > BFS' 카테고리의 다른 글
[백준 1194] 달이 차오른다, 가자. (BFS, Bitmask) (C/C++) (★★★) (0) | 2019.12.11 |
---|---|
[백준 3197] 백조의 호수 (BFS) (C/C++) (★★★) (0) | 2019.12.09 |
[백준 11559] Puyo Puyo (BFS) (C/C++) (★) (0) | 2019.12.08 |
[백준 16234] 인구이동 (BFS) (C/C++) (★★) (0) | 2019.12.07 |
[백준 2573] 빙산 (BFS) (C/C++) (★) (0) | 2019.12.06 |