CCCPaste

Untitled

#include 
#include 
#include 
#include 
using namespace std;

bool is_palindrome(int x) {
    string s = "";
    while(x > 0) {
        int digit = x % 10;
        s += (digit + '0');
        x /= 10;
    }
    int i = 0, j = s.size() - 1;
    while(i < j) {
        if(s[i] != s[j]) {
            return false;
        }
        i++;
        j--;
    }
    return true;
}
int main() {
    vector palindromes;
    for(int i = 1; i <= 100000; i++) {
        if(is_palindrome(i)) {
            palindromes.push_back(i);
        }
    }
    
    int S, E;
    cin >> S >> E;
    
    
    vector visited(100000, false);
    visited[S] = true;
    
    queue q;
    q.push(S);
    q.push(0);
    while(!q.empty()) {
        int number = q.front();
        q.pop();
        int dist = q.front();
        q.pop();
        
        if(number == E) {
            cout << dist << endl;
            return 0;
        }
        for(int i = 0; i < palindromes.size(); i++) {
            int palindrome = palindromes[i];
            if(palindrome < number and palindrome + number <= E) {
                if(!visited[palindrome + number]) {
                    visited[palindrome + number] = true;
                    q.push(palindrome + number);
                    q.push(dist + 1);
                }
            }
        }
    }

    
    return 0;
}